comparison src/share/vm/utilities/vmError.cpp @ 14726:92aa6797d639

Backed out merge changeset: b51e29501f30 Backed out merge revision to its first parent (8f483e200405)
author Doug Simon <doug.simon@oracle.com>
date Mon, 24 Mar 2014 21:30:43 +0100
parents b51e29501f30
children
comparison
equal deleted inserted replaced
14719:0bdd0d157040 14726:92aa6797d639
590 while (count++ < StackPrintLimit) { 590 while (count++ < StackPrintLimit) {
591 fr.print_on_error(st, buf, sizeof(buf)); 591 fr.print_on_error(st, buf, sizeof(buf));
592 st->cr(); 592 st->cr();
593 // Compiled code may use EBP register on x86 so it looks like 593 // Compiled code may use EBP register on x86 so it looks like
594 // non-walkable C frame. Use frame.sender() for java frames. 594 // non-walkable C frame. Use frame.sender() for java frames.
595 if (_thread && _thread->is_Java_thread()) { 595 if (_thread && _thread->is_Java_thread() && fr.is_java_frame()) {
596 // Catch very first native frame by using stack address. 596 RegisterMap map((JavaThread*)_thread, false); // No update
597 // For JavaThread stack_base and stack_size should be set. 597 fr = fr.sender(&map);
598 if (!_thread->on_local_stack((address)(fr.sender_sp() + 1))) { 598 continue;
599 break;
600 }
601 if (fr.is_java_frame()) {
602 RegisterMap map((JavaThread*)_thread, false); // No update
603 fr = fr.sender(&map);
604 } else {
605 fr = os::get_sender_for_C_frame(&fr);
606 }
607 } else {
608 // is_first_C_frame() does only simple checks for frame pointer,
609 // it will pass if java compiled code has a pointer in EBP.
610 if (os::is_first_C_frame(&fr)) break;
611 fr = os::get_sender_for_C_frame(&fr);
612 } 599 }
600 if (os::is_first_C_frame(&fr)) break;
601 fr = os::get_sender_for_C_frame(&fr);
613 } 602 }
614 603
615 if (count > StackPrintLimit) { 604 if (count > StackPrintLimit) {
616 st->print_cr("...<more frames>..."); 605 st->print_cr("...<more frames>...");
617 } 606 }