hotspot/src/share/vm/interpreter/linkResolver.cpp
changeset 22521 5387725ea99d
parent 22232 26acfad336c0
child 22739 74105c330330
equal deleted inserted replaced
22516:19615e4d71bd 22521:5387725ea99d
     1 /*
     1 /*
     2  * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
   647                                                         method_name,
   647                                                         method_name,
   648                                                         method_signature));
   648                                                         method_signature));
   649     }
   649     }
   650   }
   650   }
   651 
   651 
   652   if (nostatics && resolved_method->is_static()) {
       
   653     ResourceMark rm(THREAD);
       
   654     char buf[200];
       
   655     jio_snprintf(buf, sizeof(buf), "Expected instance not static method %s", Method::name_and_sig_as_C_string(resolved_klass(),
       
   656                                                       resolved_method->name(),
       
   657                                                       resolved_method->signature()));
       
   658     THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
       
   659   }
       
   660 
       
   661 
       
   662   if (check_access) {
   652   if (check_access) {
   663     // JDK8 adds non-public interface methods, and accessability check requirement
   653     // JDK8 adds non-public interface methods, and accessability check requirement
   664     assert(current_klass.not_null() , "current_klass should not be null");
   654     assert(current_klass.not_null() , "current_klass should not be null");
   665 
   655 
   666     // check if method can be accessed by the referring class
   656     // check if method can be accessed by the referring class
   700         THROW_MSG(vmSymbols::java_lang_LinkageError(), buf);
   690         THROW_MSG(vmSymbols::java_lang_LinkageError(), buf);
   701       }
   691       }
   702     }
   692     }
   703   }
   693   }
   704 
   694 
       
   695   if (nostatics && resolved_method->is_static()) {
       
   696     ResourceMark rm(THREAD);
       
   697     char buf[200];
       
   698     jio_snprintf(buf, sizeof(buf), "Expected instance not static method %s",
       
   699                  Method::name_and_sig_as_C_string(resolved_klass(),
       
   700                  resolved_method->name(), resolved_method->signature()));
       
   701     THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
       
   702   }
       
   703 
   705   if (TraceItables && Verbose) {
   704   if (TraceItables && Verbose) {
   706     ResourceMark rm(THREAD);
   705     ResourceMark rm(THREAD);
   707     tty->print("invokeinterface resolved method: caller-class:%s, compile-time-class:%s, method:%s, method_holder:%s, access_flags: ",
   706     tty->print("invokeinterface resolved method: caller-class:%s, compile-time-class:%s, method:%s, method_holder:%s, access_flags: ",
   708                    (current_klass.is_null() ? "<NULL>" : current_klass->internal_name()),
   707                    (current_klass.is_null() ? "<NULL>" : current_klass->internal_name()),
   709                    (resolved_klass.is_null() ? "<NULL>" : resolved_klass->internal_name()),
   708                    (resolved_klass.is_null() ? "<NULL>" : resolved_klass->internal_name()),