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, must be global register for incr_allocated_bytes |
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 RegisterOrConstant size_in_bytes = var_size_in_bytes->is_valid() |
|
174 ? RegisterOrConstant(var_size_in_bytes) : RegisterOrConstant(con_size_in_bytes); |
173 if (UseTLAB) { |
175 if (UseTLAB) { |
174 tlab_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case); |
176 tlab_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case); |
175 } else { |
177 } else { |
176 eden_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case); |
178 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); |
179 incr_allocated_bytes(size_in_bytes, t1, t2); |
178 } |
180 } |
179 } |
181 } |
180 |
182 |
181 |
183 |
182 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) { |
184 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) { |