--- a/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp Wed Oct 09 11:05:17 2013 -0700
+++ b/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp Wed Oct 09 16:32:21 2013 +0200
@@ -3026,6 +3026,7 @@
// profile this call
__ profile_final_call(rax);
+ __ profile_arguments_type(rax, method, r13, true);
__ jump_from_interpreted(method, rax);
@@ -3040,6 +3041,7 @@
// get target Method* & entry point
__ lookup_virtual_method(rax, index, method);
+ __ profile_arguments_type(rdx, method, r13, true);
__ jump_from_interpreted(method, rdx);
}
@@ -3069,6 +3071,7 @@
__ null_check(rcx);
// do the call
__ profile_call(rax);
+ __ profile_arguments_type(rax, rbx, r13, false);
__ jump_from_interpreted(rbx, rax);
}
@@ -3079,6 +3082,7 @@
prepare_invoke(byte_no, rbx); // get f1 Method*
// do the call
__ profile_call(rax);
+ __ profile_arguments_type(rax, rbx, r13, false);
__ jump_from_interpreted(rbx, rax);
}
@@ -3136,6 +3140,8 @@
__ testptr(rbx, rbx);
__ jcc(Assembler::zero, no_such_method);
+ __ profile_arguments_type(rdx, rbx, r13, true);
+
// do the call
// rcx: receiver
// rbx,: Method*
@@ -3193,6 +3199,7 @@
// FIXME: profile the LambdaForm also
__ profile_final_call(rax);
+ __ profile_arguments_type(rdx, rbx_method, r13, true);
__ jump_from_interpreted(rbx_method, rdx);
}
@@ -3226,6 +3233,7 @@
// %%% should make a type profile for any invokedynamic that takes a ref argument
// profile this call
__ profile_call(r13);
+ __ profile_arguments_type(rdx, rbx_method, r13, false);
__ verify_oop(rax_callsite);