src/cpu/mips/vm/c1_Runtime1_mips.cpp

changeset 9205
cce12244eb8c
parent 9171
c67c94f5b85d
child 9207
874b8588c4ae
equal deleted inserted replaced
9204:759864872cd8 9205:cce12244eb8c
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

mercurial