hotspot/src/share/vm/interpreter/rewriter.cpp
changeset 36819 bca375d368ed
parent 35492 c8c0273e6b91
child 38031 e0b822facc03
--- 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;
         }