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
--- a/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp Fri Feb 05 12:27:12 2010 -0800
+++ b/hotspot/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);