diff -r 6061df52d610 -r 53ccc37bda19 hotspot/src/share/vm/ci/ciMethod.cpp --- a/hotspot/src/share/vm/ci/ciMethod.cpp Wed Mar 15 11:44:46 2017 +0100 +++ b/hotspot/src/share/vm/ci/ciMethod.cpp Wed Mar 15 10:25:37 2017 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -783,24 +783,24 @@ check_is_loaded(); VM_ENTRY_MARK; - KlassHandle caller_klass (THREAD, caller->get_Klass()); - KlassHandle h_recv (THREAD, exact_receiver->get_Klass()); - KlassHandle h_resolved (THREAD, holder()->get_Klass()); + Klass* caller_klass = caller->get_Klass(); + Klass* recv = exact_receiver->get_Klass(); + Klass* resolved = holder()->get_Klass(); Symbol* h_name = name()->get_symbol(); Symbol* h_signature = signature()->get_symbol(); - LinkInfo link_info(h_resolved, h_name, h_signature, caller_klass, + LinkInfo link_info(resolved, h_name, h_signature, caller_klass, check_access ? LinkInfo::needs_access_check : LinkInfo::skip_access_check); methodHandle m; // Only do exact lookup if receiver klass has been linked. Otherwise, // the vtable has not been setup, and the LinkResolver will fail. - if (h_recv->is_array_klass() + if (recv->is_array_klass() || - InstanceKlass::cast(h_recv())->is_linked() && !exact_receiver->is_interface()) { + InstanceKlass::cast(recv)->is_linked() && !exact_receiver->is_interface()) { if (holder()->is_interface()) { - m = LinkResolver::resolve_interface_call_or_null(h_recv, link_info); + m = LinkResolver::resolve_interface_call_or_null(recv, link_info); } else { - m = LinkResolver::resolve_virtual_call_or_null(h_recv, link_info); + m = LinkResolver::resolve_virtual_call_or_null(recv, link_info); } } @@ -839,13 +839,13 @@ receiver->as_instance_klass()->is_linked())) { VM_ENTRY_MARK; - KlassHandle caller_klass (THREAD, caller->get_Klass()); - KlassHandle h_recv (THREAD, receiver->get_Klass()); + Klass* caller_klass = caller->get_Klass(); + Klass* recv = receiver->get_Klass(); Symbol* h_name = name()->get_symbol(); Symbol* h_signature = signature()->get_symbol(); - LinkInfo link_info(h_recv, h_name, h_signature, caller_klass); - vtable_index = LinkResolver::resolve_virtual_vtable_index(h_recv, link_info); + LinkInfo link_info(recv, h_name, h_signature, caller_klass); + vtable_index = LinkResolver::resolve_virtual_vtable_index(recv, link_info); if (vtable_index == Method::nonvirtual_vtable_index) { // A statically bound method. Return "no such index". vtable_index = Method::invalid_vtable_index;