< prev index next >

src/hotspot/share/interpreter/linkResolver.cpp

Print this page

        

@@ -816,13 +816,10 @@
   }
   st->cr();
 #endif // PRODUCT
 }
 
-// FIXME: update to correct version
-#define VIRTUAL_PRIVATE_ACCESS_VERSION 53
-
 // Do linktime resolution of a method in the interface within the context of the specied bytecode.
 methodHandle LinkResolver::resolve_interface_method(const LinkInfo& link_info, Bytecodes::Code code, TRAPS) {
 
   Klass* resolved_klass = link_info.resolved_klass();
 

@@ -883,25 +880,10 @@
                  Method::name_and_sig_as_C_string(resolved_klass,
                  resolved_method->name(), resolved_method->signature()));
     THROW_MSG_NULL(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
   }
 
-  if (code == Bytecodes::_invokeinterface && resolved_method->is_private()) {
-    Klass* current_klass = link_info.current_klass();
-    assert(current_klass != NULL, "current_klass should not be null for invokeinterface");
-    if (InstanceKlass::cast(current_klass)->major_version() < VIRTUAL_PRIVATE_ACCESS_VERSION) {
-      ResourceMark rm(THREAD);
-      char buf[200];
-      jio_snprintf(buf, sizeof(buf), "private interface method requires invokespecial, not invokeinterface: method %s, caller-class:%s",
-                   Method::name_and_sig_as_C_string(resolved_klass,
-                                                    resolved_method->name(),
-                                                    resolved_method->signature()),
-                   current_klass->internal_name());
-      THROW_MSG_NULL(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
-    }
-  }
-
   if (log_develop_is_enabled(Trace, itables)) {
     char buf[200];
     jio_snprintf(buf, sizeof(buf), "%s resolved interface method: caller-class:",
                  Bytecodes::name(code));
     trace_method_resolution(buf, link_info.current_klass(), resolved_klass,
< prev index next >