1 /* |
1 /* |
2 * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
2778 // Place exception on top of stack |
2778 // Place exception on top of stack |
2779 SET_STACK_OBJECT(except_oop(), 0); |
2779 SET_STACK_OBJECT(except_oop(), 0); |
2780 MORE_STACK(1); |
2780 MORE_STACK(1); |
2781 pc = METHOD->code_base() + continuation_bci; |
2781 pc = METHOD->code_base() + continuation_bci; |
2782 if (log_is_enabled(Info, exceptions)) { |
2782 if (log_is_enabled(Info, exceptions)) { |
2783 ResourceMark rm; |
2783 ResourceMark rm(thread); |
2784 log_info(exceptions)("Exception <%s> (" INTPTR_FORMAT ")\n" |
2784 stringStream tempst; |
2785 " thrown in interpreter method <%s>\n" |
2785 tempst.print("interpreter method <%s>\n" |
2786 " at bci %d, continuing at %d for thread " INTPTR_FORMAT, |
2786 " at bci %d, continuing at %d for thread " INTPTR_FORMAT, |
2787 except_oop->print_value_string(), p2i(except_oop()), |
2787 METHOD->print_value_string(), |
2788 METHOD->print_value_string(), |
2788 (int)(istate->bcp() - METHOD->code_base()), |
2789 (int)(istate->bcp() - METHOD->code_base()), |
2789 (int)continuation_bci, p2i(THREAD)); |
2790 (int)continuation_bci, p2i(THREAD)); |
2790 Exceptions::log_exception(except_oop, tempst); |
2791 } |
2791 } |
2792 // for AbortVMOnException flag |
2792 // for AbortVMOnException flag |
2793 Exceptions::debug_check_abort(except_oop); |
2793 Exceptions::debug_check_abort(except_oop); |
2794 |
2794 |
2795 // Update profiling data. |
2795 // Update profiling data. |
2796 BI_PROFILE_ALIGN_TO_CURRENT_BCI(); |
2796 BI_PROFILE_ALIGN_TO_CURRENT_BCI(); |
2797 goto run; |
2797 goto run; |
2798 } |
2798 } |
2799 if (log_is_enabled(Info, exceptions)) { |
2799 if (log_is_enabled(Info, exceptions)) { |
2800 ResourceMark rm; |
2800 ResourceMark rm; |
2801 log_info(exceptions)("Exception <%s> (" INTPTR_FORMAT ")\n" |
2801 stringStream tempst; |
2802 " thrown in interpreter method <%s>\n" |
2802 tempst.print("interpreter method <%s>\n" |
2803 " at bci %d, unwinding for thread " INTPTR_FORMAT, |
2803 " at bci %d, unwinding for thread " INTPTR_FORMAT, |
2804 except_oop->print_value_string(), p2i(except_oop()), |
2804 METHOD->print_value_string(), |
2805 METHOD->print_value_string(), |
2805 (int)(istate->bcp() - METHOD->code_base()), |
2806 (int)(istate->bcp() - METHOD->code_base()), |
2806 p2i(THREAD)); |
2807 p2i(THREAD)); |
2807 Exceptions::log_exception(except_oop, tempst); |
2808 } |
2808 } |
2809 // for AbortVMOnException flag |
2809 // for AbortVMOnException flag |
2810 Exceptions::debug_check_abort(except_oop); |
2810 Exceptions::debug_check_abort(except_oop); |
2811 |
2811 |
2812 // No handler in this activation, unwind and try again |
2812 // No handler in this activation, unwind and try again |