642 // crash inside this function if stack frame is corrupted. The fatal error |
642 // crash inside this function if stack frame is corrupted. The fatal error |
643 // handler can catch and handle the crash. Here we assume the frame is valid. |
643 // handler can catch and handle the crash. Here we assume the frame is valid. |
644 // |
644 // |
645 // First letter indicates type of the frame: |
645 // First letter indicates type of the frame: |
646 // J: Java frame (compiled) |
646 // J: Java frame (compiled) |
|
647 // A: Java frame (aot compiled) |
647 // j: Java frame (interpreted) |
648 // j: Java frame (interpreted) |
648 // V: VM frame (C/C++) |
649 // V: VM frame (C/C++) |
649 // v: Other frames running VM generated code (e.g. stubs, adapters, etc.) |
650 // v: Other frames running VM generated code (e.g. stubs, adapters, etc.) |
650 // C: C/C++ frame |
651 // C: C/C++ frame |
651 // |
652 // |
683 st->print("v ~BufferBlob::%s", ((BufferBlob *)_cb)->name()); |
684 st->print("v ~BufferBlob::%s", ((BufferBlob *)_cb)->name()); |
684 } else if (_cb->is_compiled()) { |
685 } else if (_cb->is_compiled()) { |
685 CompiledMethod* cm = (CompiledMethod*)_cb; |
686 CompiledMethod* cm = (CompiledMethod*)_cb; |
686 Method* m = cm->method(); |
687 Method* m = cm->method(); |
687 if (m != NULL) { |
688 if (m != NULL) { |
688 if (cm->is_nmethod()) { |
689 if (cm->is_aot()) { |
|
690 st->print("A %d ", cm->compile_id()); |
|
691 } else if (cm->is_nmethod()) { |
689 nmethod* nm = cm->as_nmethod(); |
692 nmethod* nm = cm->as_nmethod(); |
690 st->print("J %d%s", nm->compile_id(), (nm->is_osr_method() ? "%" : "")); |
693 st->print("J %d%s", nm->compile_id(), (nm->is_osr_method() ? "%" : "")); |
691 st->print(" %s", nm->compiler_name()); |
694 st->print(" %s", nm->compiler_name()); |
692 } |
695 } |
693 m->name_and_sig_as_C_string(buf, buflen); |
696 m->name_and_sig_as_C_string(buf, buflen); |
1264 values.describe(-1, info_address, err_msg("#%d entry frame", frame_no), 2); |
1267 values.describe(-1, info_address, err_msg("#%d entry frame", frame_no), 2); |
1265 } else if (is_compiled_frame()) { |
1268 } else if (is_compiled_frame()) { |
1266 // For now just label the frame |
1269 // For now just label the frame |
1267 CompiledMethod* cm = (CompiledMethod*)cb(); |
1270 CompiledMethod* cm = (CompiledMethod*)cb(); |
1268 values.describe(-1, info_address, |
1271 values.describe(-1, info_address, |
1269 FormatBuffer<1024>("#%d nmethod " INTPTR_FORMAT " for method %s%s", frame_no, |
1272 FormatBuffer<1024>("#%d nmethod " INTPTR_FORMAT " for method %s%s%s", frame_no, |
1270 p2i(cm), cm->method()->name_and_sig_as_C_string(), |
1273 p2i(cm), |
|
1274 (cm->is_aot() ? "A ": "J "), |
|
1275 cm->method()->name_and_sig_as_C_string(), |
1271 (_deopt_state == is_deoptimized) ? |
1276 (_deopt_state == is_deoptimized) ? |
1272 " (deoptimized)" : |
1277 " (deoptimized)" : |
1273 ((_deopt_state == unknown) ? " (state unknown)" : "")), |
1278 ((_deopt_state == unknown) ? " (state unknown)" : "")), |
1274 2); |
1279 2); |
1275 } else if (is_native_frame()) { |
1280 } else if (is_native_frame()) { |