--- 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;