Mercurial > hg > graal-compiler
diff src/share/vm/utilities/vmError.cpp @ 12355:cefad50507d8
Merge with hs25-b53
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Fri, 11 Oct 2013 10:38:03 +0200 |
parents | 6b0fd0964b87 38f750491293 |
children | 096c224171c4 |
line wrap: on
line diff
--- a/src/share/vm/utilities/vmError.cpp Thu Oct 10 18:26:22 2013 +0200 +++ b/src/share/vm/utilities/vmError.cpp Fri Oct 11 10:38:03 2013 +0200 @@ -574,6 +574,10 @@ STEP(120, "(printing native stack)" ) if (_verbose) { + if (os::platform_print_native_stack(st, _context, buf, sizeof(buf))) { + // We have printed the native stack in platform-specific code + // Windows/x64 needs special handling. + } else { frame fr = _context ? os::fetch_frame_from_context(_context) : os::current_frame(); @@ -586,6 +590,13 @@ while (count++ < StackPrintLimit) { fr.print_on_error(st, buf, sizeof(buf)); st->cr(); + // Compiled code may use EBP register on x86 so it looks like + // non-walkable C frame. Use frame.sender() for java frames. + if (_thread && _thread->is_Java_thread() && fr.is_java_frame()) { + RegisterMap map((JavaThread*)_thread, false); // No update + fr = fr.sender(&map); + continue; + } if (os::is_first_C_frame(&fr)) break; fr = os::get_sender_for_C_frame(&fr); } @@ -597,6 +608,7 @@ st->cr(); } } + } STEP(130, "(printing Java stack)" )