diff -r a222fcfba398 -r d55217dc206f src/cpu/x86/vm/templateTable_x86_32.cpp --- a/src/cpu/x86/vm/templateTable_x86_32.cpp Fri Oct 08 02:42:17 2010 -0700 +++ b/src/cpu/x86/vm/templateTable_x86_32.cpp Mon Oct 11 04:18:58 2010 -0700 @@ -3111,19 +3111,22 @@ // rax: CallSite object (f1) // rbx: unused (f2) + // rcx: receiver address // rdx: flags (unused) + Register rax_callsite = rax; + Register rcx_method_handle = rcx; + if (ProfileInterpreter) { - Label L; // %%% should make a type profile for any invokedynamic that takes a ref argument // profile this call __ profile_call(rsi); } - __ movptr(rcx, Address(rax, __ delayed_value(java_dyn_CallSite::target_offset_in_bytes, rcx))); - __ null_check(rcx); + __ movptr(rcx_method_handle, Address(rax_callsite, __ delayed_value(java_dyn_CallSite::target_offset_in_bytes, rcx))); + __ null_check(rcx_method_handle); __ prepare_to_jump_from_interpreted(); - __ jump_to_method_handle_entry(rcx, rdx); + __ jump_to_method_handle_entry(rcx_method_handle, rdx); } //----------------------------------------------------------------------------------------------------