--- a/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp Wed Apr 20 18:29:35 2011 -0700
+++ b/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp Thu Apr 21 00:25:40 2011 -0700
@@ -3128,7 +3128,6 @@
return;
}
- assert(byte_no == f1_oop, "use this argument");
prepare_invoke(rax, rbx, byte_no);
// rax: CallSite object (f1)
@@ -3139,14 +3138,14 @@
Register rax_callsite = rax;
Register rcx_method_handle = rcx;
- if (ProfileInterpreter) {
- // %%% should make a type profile for any invokedynamic that takes a ref argument
- // profile this call
- __ profile_call(r13);
- }
-
- __ load_heap_oop(rcx_method_handle, Address(rax_callsite, __ delayed_value(java_lang_invoke_CallSite::target_offset_in_bytes, rcx)));
+ // %%% should make a type profile for any invokedynamic that takes a ref argument
+ // profile this call
+ __ profile_call(r13);
+
+ __ verify_oop(rax_callsite);
+ __ load_heap_oop(rcx_method_handle, Address(rax_callsite, __ delayed_value(java_lang_invoke_CallSite::target_offset_in_bytes, rdx)));
__ null_check(rcx_method_handle);
+ __ verify_oop(rcx_method_handle);
__ prepare_to_jump_from_interpreted();
__ jump_to_method_handle_entry(rcx_method_handle, rdx);
}