133 // done
134 bind(done);
135 }
136
137
138 // Defines obj, preserves var_size_in_bytes
139 void C1_MacroAssembler::try_allocate(Register obj, Register var_size_in_bytes, int con_size_in_bytes, Register t1, Register t2, Label& slow_case) {
140 if (UseTLAB) {
141 tlab_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case);
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_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()));
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 (UseCompressedOops) { // 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
|
133 // done
134 bind(done);
135 }
136
137
138 // Defines obj, preserves var_size_in_bytes
139 void C1_MacroAssembler::try_allocate(Register obj, Register var_size_in_bytes, int con_size_in_bytes, Register t1, Register t2, Label& slow_case) {
140 if (UseTLAB) {
141 tlab_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case);
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_in_bytes()));
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 (UseCompressedOops) { // 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
|