diff -r b40330c06dea -r bca375d368ed hotspot/src/share/vm/interpreter/rewriter.cpp --- a/hotspot/src/share/vm/interpreter/rewriter.cpp Thu Mar 24 09:09:52 2016 +0100 +++ b/hotspot/src/share/vm/interpreter/rewriter.cpp Thu Mar 24 11:21:49 2016 +0100 @@ -54,8 +54,10 @@ add_resolved_references_entry(i); break; case JVM_CONSTANT_Utf8: - if (_pool->symbol_at(i) == vmSymbols::java_lang_invoke_MethodHandle()) + if (_pool->symbol_at(i) == vmSymbols::java_lang_invoke_MethodHandle() || + _pool->symbol_at(i) == vmSymbols::java_lang_invoke_VarHandle()) { saw_mh_symbol = true; + } break; } } @@ -200,6 +202,12 @@ // we may need a resolved_refs entry for the appendix add_invokedynamic_resolved_references_entries(cp_index, cache_index); status = +1; + } else if (_pool->klass_ref_at_noresolve(cp_index) == vmSymbols::java_lang_invoke_VarHandle() && + MethodHandles::is_signature_polymorphic_name(SystemDictionary::VarHandle_klass(), + _pool->name_ref_at(cp_index))) { + // we may need a resolved_refs entry for the appendix + add_invokedynamic_resolved_references_entries(cp_index, cache_index); + status = +1; } else { status = -1; }