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