Lines Matching defs:hdr
38 int C1_MacroAssembler::lock_object(Register hdr, Register obj, Register disp_hdr, Register scratch, Label& slow_case) {
41 assert(hdr == rax, "hdr must be rax, for the cmpxchg instruction");
42 assert(hdr != obj && hdr != disp_hdr && obj != disp_hdr, "registers must be different");
53 null_check_offset = biased_locking_enter(disp_hdr, obj, hdr, scratch, false, done, &slow_case);
59 movptr(hdr, Address(obj, hdr_offset));
61 orptr(hdr, markOopDesc::unlocked_value);
63 movptr(Address(disp_hdr, 0), hdr);
75 // if the object header was not the same, it is now in the hdr register
78 // 1) (hdr & aligned_mask) == 0
79 // 2) rsp <= hdr
80 // 3) hdr <= rsp + page_size
84 // (hdr - rsp) & (aligned_mask - page_size)
88 subptr(hdr, rsp);
89 andptr(hdr, aligned_mask - os::vm_page_size());
91 // location (NULL in the displaced hdr location indicates recursive locking)
92 movptr(Address(disp_hdr, 0), hdr);
101 void C1_MacroAssembler::unlock_object(Register hdr, Register obj, Register disp_hdr, Label& slow_case) {
105 assert(hdr != obj && hdr != disp_hdr && obj != disp_hdr, "registers must be different");
111 biased_locking_exit(obj, hdr, done);
115 movptr(hdr, Address(disp_hdr, 0));
116 // if the loaded hdr is NULL we had recursive locking
117 testptr(hdr, hdr);
129 cmpxchgptr(hdr, Address(obj, hdr_offset));