27 #include "classfile/symbolTable.hpp" |
27 #include "classfile/symbolTable.hpp" |
28 #include "memory/filemap.hpp" |
28 #include "memory/filemap.hpp" |
29 #include "runtime/arguments.hpp" |
29 #include "runtime/arguments.hpp" |
30 #include "runtime/java.hpp" |
30 #include "runtime/java.hpp" |
31 #include "runtime/os.hpp" |
31 #include "runtime/os.hpp" |
|
32 #include "services/memTracker.hpp" |
32 #include "utilities/defaultStream.hpp" |
33 #include "utilities/defaultStream.hpp" |
33 |
34 |
34 # include <sys/stat.h> |
35 # include <sys/stat.h> |
35 # include <errno.h> |
36 # include <errno.h> |
36 |
37 |
342 ReservedSpace rs(size, alignment, false, requested_addr); |
343 ReservedSpace rs(size, alignment, false, requested_addr); |
343 if (!rs.is_reserved()) { |
344 if (!rs.is_reserved()) { |
344 fail_continue(err_msg("Unable to reserved shared space at required address " INTPTR_FORMAT, requested_addr)); |
345 fail_continue(err_msg("Unable to reserved shared space at required address " INTPTR_FORMAT, requested_addr)); |
345 return rs; |
346 return rs; |
346 } |
347 } |
|
348 // the reserved virtual memory is for mapping class data sharing archive |
|
349 if (MemTracker::is_on()) { |
|
350 MemTracker::record_virtual_memory_type((address)rs.base(), mtClassShared); |
|
351 } |
347 return rs; |
352 return rs; |
348 } |
353 } |
349 |
|
350 // Memory map a region in the address space. |
|
351 |
|
352 char* FileMapInfo::map_region(int i, ReservedSpace rs) { |
|
353 struct FileMapInfo::FileMapHeader::space_info* si = &_header._space[i]; |
|
354 size_t used = si->_used; |
|
355 size_t size = align_size_up(used, os::vm_allocation_granularity()); |
|
356 |
|
357 ReservedSpace mapped_rs = rs.first_part(size, true, true); |
|
358 ReservedSpace unmapped_rs = rs.last_part(size); |
|
359 mapped_rs.release(); |
|
360 |
|
361 return map_region(i); |
|
362 } |
|
363 |
|
364 |
354 |
365 // Memory map a region in the address space. |
355 // Memory map a region in the address space. |
366 static const char* shared_region_name[] = { "ReadOnly", "ReadWrite", "MiscData", "MiscCode"}; |
356 static const char* shared_region_name[] = { "ReadOnly", "ReadWrite", "MiscData", "MiscCode"}; |
367 |
357 |
368 char* FileMapInfo::map_region(int i) { |
358 char* FileMapInfo::map_region(int i) { |