comparison 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
comparison
equal deleted inserted replaced
1218:ff3232b68fbb 1248:455df1b81409
3236 (intptr_t) markOopDesc::prototype()); // header (address 0x1) 3236 (intptr_t) markOopDesc::prototype()); // header (address 0x1)
3237 } 3237 }
3238 __ xorl(rcx, rcx); // use zero reg to clear memory (shorter code) 3238 __ xorl(rcx, rcx); // use zero reg to clear memory (shorter code)
3239 __ store_klass_gap(rax, rcx); // zero klass gap for compressed oops 3239 __ store_klass_gap(rax, rcx); // zero klass gap for compressed oops
3240 __ store_klass(rax, rsi); // store klass last 3240 __ store_klass(rax, rsi); // store klass last
3241
3242 {
3243 SkipIfEqual skip(_masm, &DTraceAllocProbes, false);
3244 // Trigger dtrace event for fastpath
3245 __ push(atos); // save the return value
3246 __ call_VM_leaf(
3247 CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc), rax);
3248 __ pop(atos); // restore the return value
3249
3250 }
3241 __ jmp(done); 3251 __ jmp(done);
3242 } 3252 }
3243 3253
3244 {
3245 SkipIfEqual skip(_masm, &DTraceAllocProbes, false);
3246 // Trigger dtrace event for fastpath
3247 __ push(atos); // save the return value
3248 __ call_VM_leaf(
3249 CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc), rax);
3250 __ pop(atos); // restore the return value
3251 }
3252 3254
3253 // slow case 3255 // slow case
3254 __ bind(slow_case); 3256 __ bind(slow_case);
3255 __ get_constant_pool(c_rarg1); 3257 __ get_constant_pool(c_rarg1);
3256 __ get_unsigned_2_byte_index_at_bcp(c_rarg2, 1); 3258 __ get_unsigned_2_byte_index_at_bcp(c_rarg2, 1);