--- a/src/hotspot/share/prims/jni.cpp Wed May 01 12:41:26 2019 -0400
+++ b/src/hotspot/share/prims/jni.cpp Wed May 01 12:31:29 2019 -0700
@@ -88,10 +88,6 @@
#include "utilities/histogram.hpp"
#include "utilities/macros.hpp"
#include "utilities/vmError.hpp"
-#if INCLUDE_JVMCI
-#include "jvmci/jvmciCompiler.hpp"
-#include "jvmci/jvmciRuntime.hpp"
-#endif
static jint CurrentVersion = JNI_VERSION_10;
@@ -1318,14 +1314,15 @@
THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(), name_str);
}
+ Klass* klass = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz));
+
// Throw a NoSuchMethodError exception if we have an instance of a
// primitive java.lang.Class
if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(clazz))) {
- THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(), name_str);
+ ResourceMark rm;
+ THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(), err_msg("%s%s.%s%s", is_static ? "static " : "", klass->signature_name(), name_str, sig));
}
- Klass* klass = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz));
-
// Make sure class is linked and initialized before handing id's out to
// Method*s.
klass->initialize(CHECK_NULL);
@@ -1346,7 +1343,8 @@
}
}
if (m == NULL || (m->is_static() != is_static)) {
- THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(), name_str);
+ ResourceMark rm;
+ THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(), err_msg("%s%s.%s%s", is_static ? "static " : "", klass->signature_name(), name_str, sig));
}
return m->jmethod_id();
}
@@ -2014,22 +2012,26 @@
jfieldID ret = 0;
DT_RETURN_MARK(GetFieldID, jfieldID, (const jfieldID&)ret);
+ Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz));
+
// The class should have been loaded (we have an instance of the class
// passed in) so the field and signature should already be in the symbol
// table. If they're not there, the field doesn't exist.
TempNewSymbol fieldname = SymbolTable::probe(name, (int)strlen(name));
TempNewSymbol signame = SymbolTable::probe(sig, (int)strlen(sig));
if (fieldname == NULL || signame == NULL) {
- THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name);
+ ResourceMark rm;
+ THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), err_msg("%s.%s %s", k->external_name(), name, sig));
}
- Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz));
+
// Make sure class is initialized before handing id's out to fields
k->initialize(CHECK_NULL);
fieldDescriptor fd;
if (!k->is_instance_klass() ||
!InstanceKlass::cast(k)->find_field(fieldname, signame, false, &fd)) {
- THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name);
+ ResourceMark rm;
+ THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), err_msg("%s.%s %s", k->external_name(), name, sig));
}
// A jfieldID for a non-static field is simply the offset of the field within the instanceOop