106 _page_sizes[0] = default_page_size; |
106 _page_sizes[0] = default_page_size; |
107 _page_sizes[1] = 0; // sentinel |
107 _page_sizes[1] = 0; // sentinel |
108 } |
108 } |
109 |
109 |
110 static char* pd_reserve_memory(size_t bytes, char* addr = 0, |
110 static char* pd_reserve_memory(size_t bytes, char* addr = 0, |
111 size_t alignment_hint = 0); |
111 size_t alignment_hint = 0); |
112 static char* pd_attempt_reserve_memory_at(size_t bytes, char* addr); |
112 static char* pd_attempt_reserve_memory_at(size_t bytes, char* addr); |
|
113 static char* pd_attempt_reserve_memory_at(size_t bytes, char* addr, int file_desc); |
113 static void pd_split_reserved_memory(char *base, size_t size, |
114 static void pd_split_reserved_memory(char *base, size_t size, |
114 size_t split, bool realloc); |
115 size_t split, bool realloc); |
115 static bool pd_commit_memory(char* addr, size_t bytes, bool executable); |
116 static bool pd_commit_memory(char* addr, size_t bytes, bool executable); |
116 static bool pd_commit_memory(char* addr, size_t size, size_t alignment_hint, |
117 static bool pd_commit_memory(char* addr, size_t size, size_t alignment_hint, |
117 bool executable); |
118 bool executable); |
308 const char* base, |
309 const char* base, |
309 const size_t size); |
310 const size_t size); |
310 |
311 |
311 static int vm_allocation_granularity(); |
312 static int vm_allocation_granularity(); |
312 static char* reserve_memory(size_t bytes, char* addr = 0, |
313 static char* reserve_memory(size_t bytes, char* addr = 0, |
313 size_t alignment_hint = 0); |
314 size_t alignment_hint = 0, int file_desc = -1); |
314 static char* reserve_memory(size_t bytes, char* addr, |
315 static char* reserve_memory(size_t bytes, char* addr, |
315 size_t alignment_hint, MEMFLAGS flags); |
316 size_t alignment_hint, MEMFLAGS flags); |
316 static char* reserve_memory_aligned(size_t size, size_t alignment); |
317 static char* reserve_memory_aligned(size_t size, size_t alignment, int file_desc = -1); |
317 static char* attempt_reserve_memory_at(size_t bytes, char* addr); |
318 static char* attempt_reserve_memory_at(size_t bytes, char* addr, int file_desc = -1); |
318 static void split_reserved_memory(char *base, size_t size, |
319 static void split_reserved_memory(char *base, size_t size, |
319 size_t split, bool realloc); |
320 size_t split, bool realloc); |
320 static bool commit_memory(char* addr, size_t bytes, bool executable); |
321 static bool commit_memory(char* addr, size_t bytes, bool executable); |
321 static bool commit_memory(char* addr, size_t size, size_t alignment_hint, |
322 static bool commit_memory(char* addr, size_t size, size_t alignment_hint, |
322 bool executable); |
323 bool executable); |
343 static bool guard_memory(char* addr, size_t bytes); |
344 static bool guard_memory(char* addr, size_t bytes); |
344 static bool unguard_memory(char* addr, size_t bytes); |
345 static bool unguard_memory(char* addr, size_t bytes); |
345 static bool create_stack_guard_pages(char* addr, size_t bytes); |
346 static bool create_stack_guard_pages(char* addr, size_t bytes); |
346 static bool pd_create_stack_guard_pages(char* addr, size_t bytes); |
347 static bool pd_create_stack_guard_pages(char* addr, size_t bytes); |
347 static bool remove_stack_guard_pages(char* addr, size_t bytes); |
348 static bool remove_stack_guard_pages(char* addr, size_t bytes); |
|
349 // Helper function to create a new file with template jvmheap.XXXXXX. |
|
350 // Returns a valid fd on success or else returns -1 |
|
351 static int create_file_for_heap(const char* dir); |
|
352 // Map memory to the file referred by fd. This function is slightly different from map_memory() |
|
353 // and is added to be used for implementation of -XX:AllocateHeapAt |
|
354 static char* map_memory_to_file(char* base, size_t size, int fd); |
|
355 // Replace existing reserved memory with file mapping |
|
356 static char* replace_existing_mapping_with_file_mapping(char* base, size_t size, int fd); |
348 |
357 |
349 static char* map_memory(int fd, const char* file_name, size_t file_offset, |
358 static char* map_memory(int fd, const char* file_name, size_t file_offset, |
350 char *addr, size_t bytes, bool read_only = false, |
359 char *addr, size_t bytes, bool read_only = false, |
351 bool allow_exec = false); |
360 bool allow_exec = false); |
352 static char* remap_memory(int fd, const char* file_name, size_t file_offset, |
361 static char* remap_memory(int fd, const char* file_name, size_t file_offset, |