--- old/src/share/vm/ci/ciEnv.cpp 2015-11-16 22:52:17.754991366 -0800 +++ new/src/share/vm/ci/ciEnv.cpp 2015-11-16 22:52:17.617984504 -0800 @@ -703,13 +703,14 @@ InstanceKlass* holder, Symbol* name, Symbol* sig, - Bytecodes::Code bc) { + Bytecodes::Code bc, + constantTag tag) { EXCEPTION_CONTEXT; KlassHandle h_accessor(THREAD, accessor); KlassHandle h_holder(THREAD, holder); LinkResolver::check_klass_accessability(h_accessor, h_holder, KILL_COMPILE_ON_FATAL_(NULL)); methodHandle dest_method; - LinkInfo link_info(h_holder, name, sig, h_accessor, /*check_access*/true); + LinkInfo link_info(h_holder, name, sig, h_accessor, LinkInfo::needs_access_check, tag); switch (bc) { case Bytecodes::_invokestatic: dest_method = @@ -795,7 +796,9 @@ if (holder_is_accessible) { // Our declared holder is loaded. InstanceKlass* lookup = declared_holder->get_instanceKlass(); - Method* m = lookup_method(accessor->get_instanceKlass(), lookup, name_sym, sig_sym, bc); + constantTag tag = cpool->tag_ref_at(index); + assert(accessor->get_instanceKlass() == cpool->pool_holder(), "not the pool holder?"); + Method* m = lookup_method(accessor->get_instanceKlass(), lookup, name_sym, sig_sym, bc, tag); if (m != NULL && (bc == Bytecodes::_invokestatic ? m->method_holder()->is_not_initialized()