1 /* |
1 /* |
2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1999, 2012, 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. |
595 } |
595 } |
596 |
596 |
597 |
597 |
598 JRT_ENTRY(void, Runtime1::throw_range_check_exception(JavaThread* thread, int index)) |
598 JRT_ENTRY(void, Runtime1::throw_range_check_exception(JavaThread* thread, int index)) |
599 NOT_PRODUCT(_throw_range_check_exception_count++;) |
599 NOT_PRODUCT(_throw_range_check_exception_count++;) |
600 Events::log("throw_range_check"); |
|
601 char message[jintAsStringSize]; |
600 char message[jintAsStringSize]; |
602 sprintf(message, "%d", index); |
601 sprintf(message, "%d", index); |
603 SharedRuntime::throw_and_post_jvmti_exception(thread, vmSymbols::java_lang_ArrayIndexOutOfBoundsException(), message); |
602 SharedRuntime::throw_and_post_jvmti_exception(thread, vmSymbols::java_lang_ArrayIndexOutOfBoundsException(), message); |
604 JRT_END |
603 JRT_END |
605 |
604 |
606 |
605 |
607 JRT_ENTRY(void, Runtime1::throw_index_exception(JavaThread* thread, int index)) |
606 JRT_ENTRY(void, Runtime1::throw_index_exception(JavaThread* thread, int index)) |
608 NOT_PRODUCT(_throw_index_exception_count++;) |
607 NOT_PRODUCT(_throw_index_exception_count++;) |
609 Events::log("throw_index"); |
|
610 char message[16]; |
608 char message[16]; |
611 sprintf(message, "%d", index); |
609 sprintf(message, "%d", index); |
612 SharedRuntime::throw_and_post_jvmti_exception(thread, vmSymbols::java_lang_IndexOutOfBoundsException(), message); |
610 SharedRuntime::throw_and_post_jvmti_exception(thread, vmSymbols::java_lang_IndexOutOfBoundsException(), message); |
613 JRT_END |
611 JRT_END |
614 |
612 |
802 methodHandle caller_method(THREAD, vfst.method()); |
800 methodHandle caller_method(THREAD, vfst.method()); |
803 // Note that caller_method->code() may not be same as caller_code because of OSR's |
801 // Note that caller_method->code() may not be same as caller_code because of OSR's |
804 // Note also that in the presence of inlining it is not guaranteed |
802 // Note also that in the presence of inlining it is not guaranteed |
805 // that caller_method() == caller_code->method() |
803 // that caller_method() == caller_code->method() |
806 |
804 |
807 |
|
808 int bci = vfst.bci(); |
805 int bci = vfst.bci(); |
809 |
|
810 Events::log("patch_code @ " INTPTR_FORMAT , caller_frame.pc()); |
|
811 |
|
812 Bytecodes::Code code = caller_method()->java_code_at(bci); |
806 Bytecodes::Code code = caller_method()->java_code_at(bci); |
813 |
807 |
814 #ifndef PRODUCT |
808 #ifndef PRODUCT |
815 // this is used by assertions in the access_field_patching_id |
809 // this is used by assertions in the access_field_patching_id |
816 BasicType patch_field_type = T_ILLEGAL; |
810 BasicType patch_field_type = T_ILLEGAL; |