433 // get the instance size |
433 // get the instance size |
434 __ ld(G5_klass, in_bytes(Klass::layout_helper_offset()), G1_obj_size); |
434 __ ld(G5_klass, in_bytes(Klass::layout_helper_offset()), G1_obj_size); |
435 |
435 |
436 __ tlab_allocate(O0_obj, G1_obj_size, 0, G3_t1, slow_path); |
436 __ tlab_allocate(O0_obj, G1_obj_size, 0, G3_t1, slow_path); |
437 |
437 |
438 __ initialize_object(O0_obj, G5_klass, G1_obj_size, 0, G3_t1, G4_t2); |
438 __ initialize_object(O0_obj, G5_klass, G1_obj_size, 0, G3_t1, G4_t2, /* is_tlab_allocated */ true); |
439 __ verify_oop(O0_obj); |
439 __ verify_oop(O0_obj); |
440 __ mov(O0, I0); |
440 __ mov(O0, I0); |
441 __ ret(); |
441 __ ret(); |
442 __ delayed()->restore(); |
442 __ delayed()->restore(); |
443 |
443 |
445 // get the instance size |
445 // get the instance size |
446 __ ld(G5_klass, in_bytes(Klass::layout_helper_offset()), G1_obj_size); |
446 __ ld(G5_klass, in_bytes(Klass::layout_helper_offset()), G1_obj_size); |
447 __ eden_allocate(O0_obj, G1_obj_size, 0, G3_t1, G4_t2, slow_path); |
447 __ eden_allocate(O0_obj, G1_obj_size, 0, G3_t1, G4_t2, slow_path); |
448 __ incr_allocated_bytes(G1_obj_size, G3_t1, G4_t2); |
448 __ incr_allocated_bytes(G1_obj_size, G3_t1, G4_t2); |
449 |
449 |
450 __ initialize_object(O0_obj, G5_klass, G1_obj_size, 0, G3_t1, G4_t2); |
450 __ initialize_object(O0_obj, G5_klass, G1_obj_size, 0, G3_t1, G4_t2, /* is_tlab_allocated */ false); |
451 __ verify_oop(O0_obj); |
451 __ verify_oop(O0_obj); |
452 __ mov(O0, I0); |
452 __ mov(O0, I0); |
453 __ ret(); |
453 __ ret(); |
454 __ delayed()->restore(); |
454 __ delayed()->restore(); |
455 |
455 |
540 |
540 |
541 __ initialize_header(O0_obj, G5_klass, G4_length, G3_t1, O1_t2); |
541 __ initialize_header(O0_obj, G5_klass, G4_length, G3_t1, O1_t2); |
542 __ ldub(klass_lh, G3_t1, klass_lh_header_size_offset); |
542 __ ldub(klass_lh, G3_t1, klass_lh_header_size_offset); |
543 __ sub(G1_arr_size, G3_t1, O1_t2); // body length |
543 __ sub(G1_arr_size, G3_t1, O1_t2); // body length |
544 __ add(O0_obj, G3_t1, G3_t1); // body start |
544 __ add(O0_obj, G3_t1, G3_t1); // body start |
545 __ initialize_body(G3_t1, O1_t2); |
545 if (!ZeroTLAB) { |
|
546 __ initialize_body(G3_t1, O1_t2); |
|
547 } |
546 __ verify_oop(O0_obj); |
548 __ verify_oop(O0_obj); |
547 __ retl(); |
549 __ retl(); |
548 __ delayed()->nop(); |
550 __ delayed()->nop(); |
549 |
551 |
550 __ bind(try_eden); |
552 __ bind(try_eden); |