Mercurial > hg > truffle
comparison src/share/vm/runtime/sharedRuntime.cpp @ 11198:1e6d5dec4a4e
Merge.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Mon, 05 Aug 2013 13:20:06 +0200 |
parents | 6b0fd0964b87 |
children | cefad50507d8 |
comparison
equal
deleted
inserted
replaced
11197:3479ab380552 | 11198:1e6d5dec4a4e |
---|---|
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 ); |