Mercurial > hg > truffle
diff src/cpu/x86/vm/templateTable_x86_64.cpp @ 1248:455df1b81409
6587322: dtrace probe object__alloc doesn't fire in some situations on amd64
Summary: Fix misplaced probe point
Reviewed-by: rasbold, phh
Contributed-by: neojia@gmail.com
author | kamg |
---|---|
date | Mon, 08 Feb 2010 13:49:03 -0500 |
parents | 85f13cdfbc1d |
children | 76c1d7d13ec5 |
line wrap: on
line diff
--- a/src/cpu/x86/vm/templateTable_x86_64.cpp Fri Feb 05 12:27:12 2010 -0800 +++ b/src/cpu/x86/vm/templateTable_x86_64.cpp Mon Feb 08 13:49:03 2010 -0500 @@ -3238,17 +3238,19 @@ __ xorl(rcx, rcx); // use zero reg to clear memory (shorter code) __ store_klass_gap(rax, rcx); // zero klass gap for compressed oops __ store_klass(rax, rsi); // store klass last + + { + SkipIfEqual skip(_masm, &DTraceAllocProbes, false); + // Trigger dtrace event for fastpath + __ push(atos); // save the return value + __ call_VM_leaf( + CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc), rax); + __ pop(atos); // restore the return value + + } __ jmp(done); } - { - SkipIfEqual skip(_masm, &DTraceAllocProbes, false); - // Trigger dtrace event for fastpath - __ push(atos); // save the return value - __ call_VM_leaf( - CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc), rax); - __ pop(atos); // restore the return value - } // slow case __ bind(slow_case);