src/cpu/x86/vm/templateTable_x86_32.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/cpu/x86/vm/templateTable_x86_32.cpp
src/cpu/x86/vm/templateTable_x86_32.cpp
Print this page
rev 5240 : 8023657: New type profiling points: arguments to call
Summary: x86 interpreter and c1 type profiling for arguments at calls
Reviewed-by:
*** 2968,2977 ****
--- 2968,2978 ----
// It's final, need a null check here!
__ null_check(recv);
// profile this call
__ profile_final_call(rax);
+ __ profile_arguments_type(rax, method, rsi, true);
__ jump_from_interpreted(method, rax);
__ bind(notFinal);
*** 2982,2991 ****
--- 2983,2993 ----
// profile this call
__ profile_virtual_call(rax, rdi, rdx);
// get target Method* & entry point
__ lookup_virtual_method(rax, index, method);
+ __ profile_arguments_type(rdx, method, rsi, true);
__ jump_from_interpreted(method, rdx);
}
void TemplateTable::invokevirtual(int byte_no) {
*** 3011,3030 ****
--- 3013,3034 ----
rcx); // get receiver also for null check
__ verify_oop(rcx);
__ null_check(rcx);
// do the call
__ profile_call(rax);
+ __ profile_arguments_type(rax, rbx, rsi, false);
__ jump_from_interpreted(rbx, rax);
}
void TemplateTable::invokestatic(int byte_no) {
transition(vtos, vtos);
assert(byte_no == f1_byte, "use this argument");
prepare_invoke(byte_no, rbx); // get f1 Method*
// do the call
__ profile_call(rax);
+ __ profile_arguments_type(rax, rbx, rsi, false);
__ jump_from_interpreted(rbx, rax);
}
void TemplateTable::fast_invokevfinal(int byte_no) {
*** 3080,3089 ****
--- 3084,3095 ----
// interpreter entry point and a conditional jump to it in case of a null
// method.
__ testptr(rbx, rbx);
__ jcc(Assembler::zero, no_such_method);
+ __ profile_arguments_type(rdx, rbx, rsi, true);
+
// do the call
// rcx: receiver
// rbx,: Method*
__ jump_from_interpreted(rbx, rdx);
__ should_not_reach_here();
*** 3136,3145 ****
--- 3142,3152 ----
// Note: rax_mtype is already pushed (if necessary) by prepare_invoke
// FIXME: profile the LambdaForm also
__ profile_final_call(rax);
+ __ profile_arguments_type(rdx, rbx_method, rsi, true);
__ jump_from_interpreted(rbx_method, rdx);
}
*** 3169,3178 ****
--- 3176,3186 ----
// Note: rax_callsite is already pushed by prepare_invoke
// %%% should make a type profile for any invokedynamic that takes a ref argument
// profile this call
__ profile_call(rsi);
+ __ profile_arguments_type(rdx, rbx, rsi, false);
__ verify_oop(rax_callsite);
__ jump_from_interpreted(rbx_method, rdx);
}
src/cpu/x86/vm/templateTable_x86_32.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File