--- a/hotspot/src/share/vm/runtime/os.hpp Wed Jun 27 15:23:36 2012 +0200
+++ b/hotspot/src/share/vm/runtime/os.hpp Thu Jun 28 17:03:16 2012 -0400
@@ -99,6 +99,28 @@
_page_sizes[1] = 0; // sentinel
}
+ static char* pd_reserve_memory(size_t bytes, char* addr = 0,
+ size_t alignment_hint = 0);
+ static char* pd_attempt_reserve_memory_at(size_t bytes, char* addr);
+ static void pd_split_reserved_memory(char *base, size_t size,
+ size_t split, bool realloc);
+ static bool pd_commit_memory(char* addr, size_t bytes, bool executable = false);
+ static bool pd_commit_memory(char* addr, size_t size, size_t alignment_hint,
+ bool executable = false);
+ static bool pd_uncommit_memory(char* addr, size_t bytes);
+ static bool pd_release_memory(char* addr, size_t bytes);
+
+ static char* pd_map_memory(int fd, const char* file_name, size_t file_offset,
+ char *addr, size_t bytes, bool read_only = false,
+ bool allow_exec = false);
+ static char* pd_remap_memory(int fd, const char* file_name, size_t file_offset,
+ char *addr, size_t bytes, bool read_only,
+ bool allow_exec);
+ static bool pd_unmap_memory(char *addr, size_t bytes);
+ static void pd_free_memory(char *addr, size_t bytes, size_t alignment_hint);
+ static void pd_realign_memory(char *addr, size_t bytes, size_t alignment_hint);
+
+
public:
static void init(void); // Called before command line parsing
static jint init_2(void); // Called after command line parsing
@@ -236,8 +258,7 @@
static char* attempt_reserve_memory_at(size_t bytes, char* addr);
static void split_reserved_memory(char *base, size_t size,
size_t split, bool realloc);
- static bool commit_memory(char* addr, size_t bytes,
- bool executable = false);
+ static bool commit_memory(char* addr, size_t bytes, bool executable = false);
static bool commit_memory(char* addr, size_t size, size_t alignment_hint,
bool executable = false);
static bool uncommit_memory(char* addr, size_t bytes);
@@ -250,6 +271,7 @@
static bool guard_memory(char* addr, size_t bytes);
static bool unguard_memory(char* addr, size_t bytes);
static bool create_stack_guard_pages(char* addr, size_t bytes);
+ static bool pd_create_stack_guard_pages(char* addr, size_t bytes);
static bool remove_stack_guard_pages(char* addr, size_t bytes);
static char* map_memory(int fd, const char* file_name, size_t file_offset,
@@ -573,12 +595,15 @@
static void* thread_local_storage_at(int index);
static void free_thread_local_storage(int index);
+ // Stack walk
+ static address get_caller_pc(int n = 0);
+
// General allocation (must be MT-safe)
- static void* malloc (size_t size);
- static void* realloc (void *memblock, size_t size);
- static void free (void *memblock);
+ static void* malloc (size_t size, MEMFLAGS flags, address caller_pc = 0);
+ static void* realloc (void *memblock, size_t size, MEMFLAGS flags, address caller_pc = 0);
+ static void free (void *memblock, MEMFLAGS flags = mtNone);
static bool check_heap(bool force = false); // verify C heap integrity
- static char* strdup(const char *); // Like strdup
+ static char* strdup(const char *, MEMFLAGS flags = mtInternal); // Like strdup
#ifndef PRODUCT
static julong num_mallocs; // # of calls to malloc/realloc