aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/x86/vm/templateTable_x86_64.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/x86/vm/templateTable_x86_64.cpp')
-rw-r--r--src/cpu/x86/vm/templateTable_x86_64.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/cpu/x86/vm/templateTable_x86_64.cpp b/src/cpu/x86/vm/templateTable_x86_64.cpp
index e97c5386c..8c49726e5 100644
--- a/src/cpu/x86/vm/templateTable_x86_64.cpp
+++ b/src/cpu/x86/vm/templateTable_x86_64.cpp
@@ -3026,6 +3026,7 @@ void TemplateTable::invokevirtual_helper(Register index,
// profile this call
__ profile_final_call(rax);
+ __ profile_arguments_type(rax, method, r13, true);
__ jump_from_interpreted(method, rax);
@@ -3040,6 +3041,7 @@ void TemplateTable::invokevirtual_helper(Register index,
// 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 @@ void TemplateTable::invokespecial(int byte_no) {
__ 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 @@ void TemplateTable::invokestatic(int byte_no) {
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 @@ void TemplateTable::invokeinterface(int byte_no) {
__ 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 @@ void TemplateTable::invokehandle(int byte_no) {
// 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 @@ void TemplateTable::invokedynamic(int byte_no) {
// %%% 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);