comparison src/share/vm/runtime/sharedRuntime.cpp @ 11173:6b0fd0964b87

Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/
author Doug Simon <doug.simon@oracle.com>
date Wed, 31 Jul 2013 11:00:54 +0200
parents 347d444a6fb7 9ba41a4a71ff
children cefad50507d8
comparison
equal deleted inserted replaced
10912:4ea54634f03e 11173:6b0fd0964b87
852 // 1. Inline-cache check in C2I handler blob, 852 // 1. Inline-cache check in C2I handler blob,
853 // 2. Inline-cache check in nmethod, or 853 // 2. Inline-cache check in nmethod, or
854 // 3. Implict null exception in nmethod 854 // 3. Implict null exception in nmethod
855 855
856 if (!cb->is_nmethod()) { 856 if (!cb->is_nmethod()) {
857 guarantee(cb->is_adapter_blob() || cb->is_method_handles_adapter_blob(), 857 bool is_in_blob = cb->is_adapter_blob() || cb->is_method_handles_adapter_blob();
858 "exception happened outside interpreter, nmethods and vtable stubs (1)"); 858 if (!is_in_blob) {
859 cb->print();
860 fatal(err_msg("exception happened outside interpreter, nmethods and vtable stubs at pc " INTPTR_FORMAT, pc));
861 }
859 Events::log_exception(thread, "NullPointerException in code blob at " INTPTR_FORMAT, pc); 862 Events::log_exception(thread, "NullPointerException in code blob at " INTPTR_FORMAT, pc);
860 // There is no handler here, so we will simply unwind. 863 // There is no handler here, so we will simply unwind.
861 return StubRoutines::throw_NullPointerException_at_call_entry(); 864 return StubRoutines::throw_NullPointerException_at_call_entry();
862 } 865 }
863 866
2791 VMRegPair *SharedRuntime::find_callee_arguments(Symbol* sig, bool has_receiver, bool has_appendix, int* arg_size) { 2794 VMRegPair *SharedRuntime::find_callee_arguments(Symbol* sig, bool has_receiver, bool has_appendix, int* arg_size) {
2792 // This method is returning a data structure allocating as a 2795 // This method is returning a data structure allocating as a
2793 // ResourceObject, so do not put any ResourceMarks in here. 2796 // ResourceObject, so do not put any ResourceMarks in here.
2794 char *s = sig->as_C_string(); 2797 char *s = sig->as_C_string();
2795 int len = (int)strlen(s); 2798 int len = (int)strlen(s);
2796 *s++; len--; // Skip opening paren 2799 s++; len--; // Skip opening paren
2797 char *t = s+len; 2800 char *t = s+len;
2798 while( *(--t) != ')' ) ; // Find close paren 2801 while( *(--t) != ')' ) ; // Find close paren
2799 2802
2800 BasicType *sig_bt = NEW_RESOURCE_ARRAY( BasicType, 256 ); 2803 BasicType *sig_bt = NEW_RESOURCE_ARRAY( BasicType, 256 );
2801 VMRegPair *regs = NEW_RESOURCE_ARRAY( VMRegPair, 256 ); 2804 VMRegPair *regs = NEW_RESOURCE_ARRAY( VMRegPair, 256 );