2144 char msg_buffer[512]; |
2144 char msg_buffer[512]; |
2145 vsnprintf(msg_buffer, sizeof(msg_buffer), format, ap); |
2145 vsnprintf(msg_buffer, sizeof(msg_buffer), format, ap); |
2146 // Append method name |
2146 // Append method name |
2147 char msg_buffer2[512]; |
2147 char msg_buffer2[512]; |
2148 jio_snprintf(msg_buffer2, sizeof(msg_buffer2), "%s in method %s", msg_buffer, method()->name()->as_C_string()); |
2148 jio_snprintf(msg_buffer2, sizeof(msg_buffer2), "%s in method %s", msg_buffer, method()->name()->as_C_string()); |
2149 _exception = Exceptions::new_exception(Thread::current(), |
2149 if (Thread::current()->can_call_java()) { |
2150 vmSymbols::java_lang_LinkageError(), msg_buffer2); |
2150 _exception = Exceptions::new_exception(Thread::current(), |
|
2151 vmSymbols::java_lang_LinkageError(), msg_buffer2); |
|
2152 } else { |
|
2153 // We cannot instantiate an exception object from a compiler thread. |
|
2154 // Exit the VM with a useful error message. |
|
2155 fatal("%s", msg_buffer2); |
|
2156 } |
2151 } |
2157 } |
2152 |
2158 |
2153 void GenerateOopMap::report_error(const char *format, ...) { |
2159 void GenerateOopMap::report_error(const char *format, ...) { |
2154 va_list ap; |
2160 va_list ap; |
2155 va_start(ap, format); |
2161 va_start(ap, format); |
2157 } |
2163 } |
2158 |
2164 |
2159 void GenerateOopMap::verify_error(const char *format, ...) { |
2165 void GenerateOopMap::verify_error(const char *format, ...) { |
2160 // We do not distinguish between different types of errors for verification |
2166 // We do not distinguish between different types of errors for verification |
2161 // errors. Let the verifier give a better message. |
2167 // errors. Let the verifier give a better message. |
2162 const char *msg = "Illegal class file encountered. Try running with -Xverify:all"; |
2168 report_error("Illegal class file encountered. Try running with -Xverify:all"); |
2163 _got_error = true; |
|
2164 // Append method name |
|
2165 char msg_buffer2[512]; |
|
2166 jio_snprintf(msg_buffer2, sizeof(msg_buffer2), "%s in method %s", msg, |
|
2167 method()->name()->as_C_string()); |
|
2168 _exception = Exceptions::new_exception(Thread::current(), |
|
2169 vmSymbols::java_lang_LinkageError(), msg_buffer2); |
|
2170 } |
2169 } |
2171 |
2170 |
2172 // |
2171 // |
2173 // Report result opcodes |
2172 // Report result opcodes |
2174 // |
2173 // |