comparison src/share/vm/c1/c1_Runtime1.cpp @ 3064:aa3d708d67c4

7141200: log some interesting information in ring buffers for crashes Reviewed-by: kvn, jrose, kevinw, brutisso, twisti, jmasa
author never
date Wed, 01 Feb 2012 07:59:01 -0800
parents 20334ed5ed3c
children 0105f367a14c
comparison
equal deleted inserted replaced
32:666fa9b5ba67 33:63d033222d76
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;