hotspot/src/share/vm/interpreter/interpreter.cpp
changeset 4429 d7eb4e2099aa
parent 3600 27aa4477d039
child 4564 55dfb20908d0
--- a/hotspot/src/share/vm/interpreter/interpreter.cpp	Fri Oct 30 10:12:52 2009 -0700
+++ b/hotspot/src/share/vm/interpreter/interpreter.cpp	Fri Oct 30 16:22:59 2009 -0700
@@ -314,6 +314,20 @@
       break;
     }
 
+   case Bytecodes::_invokedynamic: {
+      Thread *thread = Thread::current();
+      ResourceMark rm(thread);
+      methodHandle mh(thread, method);
+      type = Bytecode_invoke_at(mh, bci)->result_type(thread);
+      // since the cache entry might not be initialized:
+      // (NOT needed for the old calling convension)
+      if (!is_top_frame) {
+        int index = Bytes::get_native_u4(bcp+1);
+        method->constants()->cache()->entry_at(index)->set_parameter_size(callee_parameters);
+      }
+      break;
+    }
+
     case Bytecodes::_ldc   :
       type = constant_pool_type( method, *(bcp+1) );
       break;