equal
deleted
inserted
replaced
80 } |
80 } |
81 |
81 |
82 // Load object header |
82 // Load object header |
83 ldr(hdr, Address(obj, hdr_offset)); |
83 ldr(hdr, Address(obj, hdr_offset)); |
84 // and mark it as unlocked |
84 // and mark it as unlocked |
85 orr(hdr, hdr, markOopDesc::unlocked_value); |
85 orr(hdr, hdr, markWord::unlocked_value); |
86 // save unlocked object header into the displaced header location on the stack |
86 // save unlocked object header into the displaced header location on the stack |
87 str(hdr, Address(disp_hdr, 0)); |
87 str(hdr, Address(disp_hdr, 0)); |
88 // test if object header is still the same (i.e. unlocked), and if so, store the |
88 // test if object header is still the same (i.e. unlocked), and if so, store the |
89 // displaced header address in the object header - if it is not the same, get the |
89 // displaced header address in the object header - if it is not the same, get the |
90 // object header instead |
90 // object header instead |
174 if (UseBiasedLocking && !len->is_valid()) { |
174 if (UseBiasedLocking && !len->is_valid()) { |
175 assert_different_registers(obj, klass, len, t1, t2); |
175 assert_different_registers(obj, klass, len, t1, t2); |
176 ldr(t1, Address(klass, Klass::prototype_header_offset())); |
176 ldr(t1, Address(klass, Klass::prototype_header_offset())); |
177 } else { |
177 } else { |
178 // This assumes that all prototype bits fit in an int32_t |
178 // This assumes that all prototype bits fit in an int32_t |
179 mov(t1, (int32_t)(intptr_t)markOopDesc::prototype()); |
179 mov(t1, (int32_t)(intptr_t)markWord::prototype().value()); |
180 } |
180 } |
181 str(t1, Address(obj, oopDesc::mark_offset_in_bytes())); |
181 str(t1, Address(obj, oopDesc::mark_offset_in_bytes())); |
182 |
182 |
183 if (UseCompressedClassPointers) { // Take care not to kill klass |
183 if (UseCompressedClassPointers) { // Take care not to kill klass |
184 encode_klass_not_null(t1, klass); |
184 encode_klass_not_null(t1, klass); |