--- a/src/hotspot/share/interpreter/linkResolver.hpp Wed Jan 31 10:55:49 2018 -0800
+++ b/src/hotspot/share/interpreter/linkResolver.hpp Fri Sep 08 10:46:46 2017 -0700
@@ -274,7 +274,16 @@
const constantPoolHandle& pool, int index, TRAPS);
public:
// constant pool resolving
- static void check_klass_accessability(Klass* ref_klass, Klass* sel_klass, TRAPS);
+ static void check_klass_accessability(Klass* ref_klass, Klass* sel_klass,
+ bool fold_type_to_class, TRAPS);
+ // The optional 'fold_type_to_class' means that a derived type (array)
+ // is first converted to the class it is derived from (element type).
+ // If this element type is not a class, then the check passes quietly.
+ // This is usually what is needed, but a few existing uses might break
+ // if this flag were always turned on. FIXME: See if it can be, always.
+ static void check_klass_accessability(Klass* ref_klass, Klass* sel_klass, TRAPS) {
+ return check_klass_accessability(ref_klass, sel_klass, false, THREAD);
+ }
// static resolving calls (will not run any Java code);
// used only from Bytecode_invoke::static_target
@@ -306,7 +315,7 @@
bool check_null_and_abstract, TRAPS);
static void resolve_handle_call (CallInfo& result,
const LinkInfo& link_info, TRAPS);
- static void resolve_dynamic_call (CallInfo& result, Handle bootstrap_specifier,
+ static void resolve_dynamic_call (CallInfo& result, int pool_index, Handle bootstrap_specifier,
Symbol* method_name, Symbol* method_signature,
Klass* current_klass, TRAPS);