142 } else {
143 eden_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case);
144 incr_allocated_bytes(noreg, var_size_in_bytes, con_size_in_bytes, t1);
145 }
146 }
147
148
149 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) {
150 assert_different_registers(obj, klass, len);
151 if (UseBiasedLocking && !len->is_valid()) {
152 assert_different_registers(obj, klass, len, t1, t2);
153 movptr(t1, Address(klass, Klass::prototype_header_offset()));
154 movptr(Address(obj, oopDesc::mark_offset_in_bytes()), t1);
155 } else {
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());
158 }
159 #ifdef _LP64
160 if (UseCompressedKlassPointers) { // Take care not to kill klass
161 movptr(t1, klass);
162 encode_heap_oop_not_null(t1);
163 movl(Address(obj, oopDesc::klass_offset_in_bytes()), t1);
164 } else
165 #endif
166 {
167 movptr(Address(obj, oopDesc::klass_offset_in_bytes()), klass);
168 }
169
170 if (len->is_valid()) {
171 movl(Address(obj, arrayOopDesc::length_offset_in_bytes()), len);
172 }
173 #ifdef _LP64
174 else if (UseCompressedKlassPointers) {
175 xorptr(t1, t1);
176 store_klass_gap(obj, t1);
177 }
178 #endif
179 }
180
181
182 // preserves obj, destroys len_in_bytes
|
142 } else {
143 eden_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case);
144 incr_allocated_bytes(noreg, var_size_in_bytes, con_size_in_bytes, t1);
145 }
146 }
147
148
149 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) {
150 assert_different_registers(obj, klass, len);
151 if (UseBiasedLocking && !len->is_valid()) {
152 assert_different_registers(obj, klass, len, t1, t2);
153 movptr(t1, Address(klass, Klass::prototype_header_offset()));
154 movptr(Address(obj, oopDesc::mark_offset_in_bytes()), t1);
155 } else {
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());
158 }
159 #ifdef _LP64
160 if (UseCompressedKlassPointers) { // Take care not to kill klass
161 movptr(t1, klass);
162 encode_klass_not_null(t1);
163 movl(Address(obj, oopDesc::klass_offset_in_bytes()), t1);
164 } else
165 #endif
166 {
167 movptr(Address(obj, oopDesc::klass_offset_in_bytes()), klass);
168 }
169
170 if (len->is_valid()) {
171 movl(Address(obj, arrayOopDesc::length_offset_in_bytes()), len);
172 }
173 #ifdef _LP64
174 else if (UseCompressedKlassPointers) {
175 xorptr(t1, t1);
176 store_klass_gap(obj, t1);
177 }
178 #endif
179 }
180
181
182 // preserves obj, destroys len_in_bytes
|