src/share/vm/interpreter/interpreterRuntime.cpp

changeset 9013
18366fa39fe0
parent 8885
1832e44a9889
parent 8997
f8a45a60bc6b
child 9041
95a08233f46c
child 9301
d47844b56aaf
equal deleted inserted replaced
8910:f299cf0b7bae 9013:18366fa39fe0
1 /* 1 /*
2 * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2017, 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.
766 #endif 766 #endif
767 // Get sender or sender's host_klass, and only set cpCache entry to resolved if 767 // Get sender or sender's host_klass, and only set cpCache entry to resolved if
768 // it is not an interface. The receiver for invokespecial calls within interface 768 // it is not an interface. The receiver for invokespecial calls within interface
769 // methods must be checked for every call. 769 // methods must be checked for every call.
770 InstanceKlass* sender = pool->pool_holder(); 770 InstanceKlass* sender = pool->pool_holder();
771 sender = sender->is_anonymous() ? InstanceKlass::cast(sender->host_klass()) : sender; 771 sender = sender->has_host_klass() ? InstanceKlass::cast(sender->host_klass()) : sender;
772 772
773 switch (info.call_kind()) { 773 switch (info.call_kind()) {
774 case CallInfo::direct_call: 774 case CallInfo::direct_call:
775 cache_entry(thread)->set_direct_call( 775 cache_entry(thread)->set_direct_call(
776 bytecode, 776 bytecode,
784 info.vtable_index()); 784 info.vtable_index());
785 break; 785 break;
786 case CallInfo::itable_call: 786 case CallInfo::itable_call:
787 cache_entry(thread)->set_itable_call( 787 cache_entry(thread)->set_itable_call(
788 bytecode, 788 bytecode,
789 info.resolved_klass(),
789 info.resolved_method(), 790 info.resolved_method(),
790 info.itable_index()); 791 info.itable_index());
791 break; 792 break;
792 default: ShouldNotReachHere(); 793 default: ShouldNotReachHere();
793 } 794 }

mercurial