Mercurial > hg > graal-jvmci-8
comparison src/os/posix/vm/os_posix.cpp @ 20360:833b0f92429a
8046598: Scalable Native memory tracking development
Summary: Enhance scalability of native memory tracking
Reviewed-by: coleenp, ctornqvi, gtriantafill
author | zgu |
---|---|
date | Wed, 27 Aug 2014 08:19:12 -0400 |
parents | 78bbf4d43a14 |
children | 7848fc12602b 2988e5adeb8c |
comparison
equal
deleted
inserted
replaced
20359:4d3a43351904 | 20360:833b0f92429a |
---|---|
72 } | 72 } |
73 } | 73 } |
74 VMError::report_coredump_status(buffer, success); | 74 VMError::report_coredump_status(buffer, success); |
75 } | 75 } |
76 | 76 |
77 address os::get_caller_pc(int n) { | 77 int os::get_native_stack(address* stack, int frames, int toSkip) { |
78 #ifdef _NMT_NOINLINE_ | 78 #ifdef _NMT_NOINLINE_ |
79 n ++; | 79 toSkip++; |
80 #endif | 80 #endif |
81 | |
82 int frame_idx = 0; | |
83 int num_of_frames; // number of frames captured | |
81 frame fr = os::current_frame(); | 84 frame fr = os::current_frame(); |
82 while (n > 0 && fr.pc() && | 85 while (fr.pc() && frame_idx < frames) { |
83 !os::is_first_C_frame(&fr) && fr.sender_pc()) { | 86 if (toSkip > 0) { |
84 fr = os::get_sender_for_C_frame(&fr); | 87 toSkip --; |
85 n --; | 88 } else { |
86 } | 89 stack[frame_idx ++] = fr.pc(); |
87 if (n == 0) { | 90 } |
88 return fr.pc(); | 91 if (fr.fp() == NULL || os::is_first_C_frame(&fr) |
89 } else { | 92 ||fr.sender_pc() == NULL || fr.cb() != NULL) break; |
90 return NULL; | 93 |
91 } | 94 if (fr.sender_pc() && !os::is_first_C_frame(&fr)) { |
95 fr = os::get_sender_for_C_frame(&fr); | |
96 } else { | |
97 break; | |
98 } | |
99 } | |
100 num_of_frames = frame_idx; | |
101 for (; frame_idx < frames; frame_idx ++) { | |
102 stack[frame_idx] = NULL; | |
103 } | |
104 | |
105 return num_of_frames; | |
106 } | |
107 | |
108 | |
109 bool os::unsetenv(const char* name) { | |
110 assert(name != NULL, "Null pointer"); | |
111 return (::unsetenv(name) == 0); | |
92 } | 112 } |
93 | 113 |
94 int os::get_last_error() { | 114 int os::get_last_error() { |
95 return errno; | 115 return errno; |
96 } | 116 } |