148 |
148 |
149 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) { |
149 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) { |
150 assert_different_registers(obj, klass, len); |
150 assert_different_registers(obj, klass, len); |
151 if (UseBiasedLocking && !len->is_valid()) { |
151 if (UseBiasedLocking && !len->is_valid()) { |
152 assert_different_registers(obj, klass, len, t1, t2); |
152 assert_different_registers(obj, klass, len, t1, t2); |
153 movptr(t1, Address(klass, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes())); |
153 movptr(t1, Address(klass, Klass::prototype_header_offset())); |
154 movptr(Address(obj, oopDesc::mark_offset_in_bytes()), t1); |
154 movptr(Address(obj, oopDesc::mark_offset_in_bytes()), t1); |
155 } else { |
155 } else { |
156 // This assumes that all prototype bits fit in an int32_t |
156 // This assumes that all prototype bits fit in an int32_t |
157 movptr(Address(obj, oopDesc::mark_offset_in_bytes ()), (int32_t)(intptr_t)markOopDesc::prototype()); |
157 movptr(Address(obj, oopDesc::mark_offset_in_bytes ()), (int32_t)(intptr_t)markOopDesc::prototype()); |
158 } |
158 } |