164 |
164 |
165 void C1_MacroAssembler::try_allocate( |
165 void C1_MacroAssembler::try_allocate( |
166 Register obj, // result: pointer to object after successful allocation |
166 Register obj, // result: pointer to object after successful allocation |
167 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise |
167 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise |
168 int con_size_in_bytes, // object size in bytes if known at compile time |
168 int con_size_in_bytes, // object size in bytes if known at compile time |
169 Register t1, // temp register |
169 Register t1, // temp register, must be global register for incr_allocated_bytes |
170 Register t2, // temp register |
170 Register t2, // temp register |
171 Label& slow_case // continuation point if fast allocation fails |
171 Label& slow_case // continuation point if fast allocation fails |
172 ) { |
172 ) { |
173 if (UseTLAB) { |
173 if (UseTLAB) { |
174 tlab_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case); |
174 tlab_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case); |
175 } else { |
175 } else { |
176 eden_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case); |
176 eden_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case); |
|
177 incr_allocated_bytes(var_size_in_bytes, con_size_in_bytes, t1); |
177 } |
178 } |
178 } |
179 } |
179 |
180 |
180 |
181 |
181 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) { |
182 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) { |
212 |
213 |
213 |
214 |
214 void C1_MacroAssembler::allocate_object( |
215 void C1_MacroAssembler::allocate_object( |
215 Register obj, // result: pointer to object after successful allocation |
216 Register obj, // result: pointer to object after successful allocation |
216 Register t1, // temp register |
217 Register t1, // temp register |
217 Register t2, // temp register |
218 Register t2, // temp register, must be a global register for try_allocate |
218 Register t3, // temp register |
219 Register t3, // temp register |
219 int hdr_size, // object header size in words |
220 int hdr_size, // object header size in words |
220 int obj_size, // object size in words |
221 int obj_size, // object size in words |
221 Register klass, // object klass |
222 Register klass, // object klass |
222 Label& slow_case // continuation point if fast allocation fails |
223 Label& slow_case // continuation point if fast allocation fails |