< prev index next >
hotspot/src/share/vm/prims/stackwalk.cpp
Print this page
*** 111,121 ****
for (; !stream.at_end(); stream.next()) {
Method* method = stream.method();
int bci = stream.bci();
if (method == NULL) continue;
! if (!ShowHiddenFrames && StackWalk::skip_hidden_frames(mode)) {
if (method->is_hidden()) {
if (TraceStackWalk) {
tty->print(" hidden method: "); method->print_short_name();
tty->print("\n");
}
--- 111,124 ----
for (; !stream.at_end(); stream.next()) {
Method* method = stream.method();
int bci = stream.bci();
if (method == NULL) continue;
!
! // skip hidden frames for default StackWalker option (i.e. SHOW_HIDDEN_FRAMES
! // not set) and when StackWalker::getCallerClass is called
! if (!ShowHiddenFrames && (skip_hidden_frames(mode) || get_caller_class(mode))) {
if (method->is_hidden()) {
if (TraceStackWalk) {
tty->print(" hidden method: "); method->print_short_name();
tty->print("\n");
}
*** 137,147 ****
} else if (need_method_info(mode)) {
assert (use_frames_array(mode), "Bad mode for get stack frame");
Handle stackFrame(frames_array->obj_at(index));
fill_stackframe(stackFrame, method, bci);
} else {
! assert (use_frames_array(mode) == false, "Bad mode for get caller class");
frames_array->obj_at_put(index, method->method_holder()->java_mirror());
}
if (++frames_decoded >= max_nframes) break;
}
return frames_decoded;
--- 140,156 ----
} else if (need_method_info(mode)) {
assert (use_frames_array(mode), "Bad mode for get stack frame");
Handle stackFrame(frames_array->obj_at(index));
fill_stackframe(stackFrame, method, bci);
} else {
! assert (get_caller_class(mode) == true, "Bad mode for get caller class");
! if (index == start_index && method->caller_sensitive()) {
! THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(),
! err_msg("StackWalker::getCallerClass called from @CallerSensitive %s method",
! method->name_and_sig_as_C_string()));
! }
!
frames_array->obj_at_put(index, method->method_holder()->java_mirror());
}
if (++frames_decoded >= max_nframes) break;
}
return frames_decoded;
< prev index next >