1069 __ initialize_object(obj, klass, obj_size, 0, t1, t2); |
1069 __ initialize_object(obj, klass, obj_size, 0, t1, t2); |
1070 __ verify_oop(obj); |
1070 __ verify_oop(obj); |
1071 __ jr(RA); |
1071 __ jr(RA); |
1072 __ delayed()->nop(); |
1072 __ delayed()->nop(); |
1073 |
1073 |
|
1074 #ifndef OPT_THREAD |
|
1075 const Register thread = T8; |
|
1076 __ get_thread(thread); |
|
1077 #else |
|
1078 const Register thread = TREG; |
|
1079 #endif |
|
1080 |
1074 __ bind(try_eden); |
1081 __ bind(try_eden); |
1075 |
1082 |
1076 // get the instance size |
1083 // get the instance size |
1077 __ lw(obj_size, klass, in_bytes(Klass::layout_helper_offset())); |
1084 __ lw(obj_size, klass, in_bytes(Klass::layout_helper_offset())); |
1078 __ eden_allocate(obj, obj_size, 0, t1, t2, slow_path); |
1085 __ eden_allocate(obj, obj_size, 0, t1, t2, slow_path); |
|
1086 __ incr_allocated_bytes(thread, obj_size, 0); |
|
1087 |
1079 __ initialize_object(obj, klass, obj_size, 0, t1, t2); |
1088 __ initialize_object(obj, klass, obj_size, 0, t1, t2); |
1080 __ verify_oop(obj); |
1089 __ verify_oop(obj); |
1081 __ jr(RA); |
1090 __ jr(RA); |
1082 __ delayed()->nop(); |
1091 __ delayed()->nop(); |
1083 |
1092 |
1191 __ initialize_body(t1, arr_size, 0, t2); |
1200 __ initialize_body(t1, arr_size, 0, t2); |
1192 __ verify_oop(obj); |
1201 __ verify_oop(obj); |
1193 __ jr(RA); |
1202 __ jr(RA); |
1194 __ delayed()->nop(); |
1203 __ delayed()->nop(); |
1195 |
1204 |
|
1205 #ifndef OPT_THREAD |
|
1206 const Register thread = T8; |
|
1207 __ get_thread(thread); |
|
1208 #else |
|
1209 const Register thread = TREG; |
|
1210 #endif |
|
1211 |
1196 __ bind(try_eden); |
1212 __ bind(try_eden); |
1197 // get the allocation size: (length << (layout_helper & 0x1F)) + header_size |
1213 // get the allocation size: (length << (layout_helper & 0x1F)) + header_size |
1198 __ lw(t1, klass, in_bytes(Klass::layout_helper_offset())); |
1214 __ lw(t1, klass, in_bytes(Klass::layout_helper_offset())); |
1199 __ andi(AT, t1, 0x1f); |
1215 __ andi(AT, t1, 0x1f); |
1200 __ sllv(arr_size, length, AT); |
1216 __ sllv(arr_size, length, AT); |
1203 __ add(arr_size, t1, arr_size); |
1219 __ add(arr_size, t1, arr_size); |
1204 __ addi(arr_size, arr_size, MinObjAlignmentInBytesMask); // align up |
1220 __ addi(arr_size, arr_size, MinObjAlignmentInBytesMask); // align up |
1205 __ move(AT, ~MinObjAlignmentInBytesMask); |
1221 __ move(AT, ~MinObjAlignmentInBytesMask); |
1206 __ andr(arr_size, arr_size, AT); |
1222 __ andr(arr_size, arr_size, AT); |
1207 __ eden_allocate(obj, arr_size, 0, t1, t2, slow_path); // preserves arr_size |
1223 __ eden_allocate(obj, arr_size, 0, t1, t2, slow_path); // preserves arr_size |
|
1224 __ incr_allocated_bytes(thread, arr_size, 0); |
|
1225 |
1208 __ initialize_header(obj, klass, length,t1,t2); |
1226 __ initialize_header(obj, klass, length,t1,t2); |
1209 __ lbu(t1, Address(klass, in_bytes(Klass::layout_helper_offset()) |
1227 __ lbu(t1, Address(klass, in_bytes(Klass::layout_helper_offset()) |
1210 + (Klass::_lh_header_size_shift / BitsPerByte))); |
1228 + (Klass::_lh_header_size_shift / BitsPerByte))); |
1211 __ andi(t1, t1, Klass::_lh_header_size_mask); |
1229 __ andi(t1, t1, Klass::_lh_header_size_mask); |
1212 __ sub(arr_size, arr_size, t1); // body length |
1230 __ sub(arr_size, arr_size, t1); // body length |