hotspot/src/share/vm/prims/jvm.cpp
changeset 46660 d19370887e09
parent 46632 cef226af6c02
child 46727 6e4a84748e2c
--- a/hotspot/src/share/vm/prims/jvm.cpp	Thu Jul 13 01:28:24 2017 +0000
+++ b/hotspot/src/share/vm/prims/jvm.cpp	Thu Jul 13 08:49:09 2017 -0400
@@ -1264,8 +1264,17 @@
                                            vmSymbols::run_method_name(),
                                            vmSymbols::void_object_signature(),
                                            Klass::find_overpass);
+
+  // See if there is a default method for "Object run()".
+  if (m_oop == NULL && object->klass()->is_instance_klass()) {
+    InstanceKlass* iklass = InstanceKlass::cast(object->klass());
+    m_oop = iklass->lookup_method_in_ordered_interfaces(
+                                           vmSymbols::run_method_name(),
+                                           vmSymbols::void_object_signature());
+  }
+
   methodHandle m (THREAD, m_oop);
-  if (m.is_null() || !m->is_method() || !m()->is_public() || m()->is_static()) {
+  if (m.is_null() || !m->is_method() || !m()->is_public() || m()->is_static() || m()->is_abstract()) {
     THROW_MSG_0(vmSymbols::java_lang_InternalError(), "No run method");
   }