1329 __ shll(dest_reg, 16);
1330 __ sarl(dest_reg, 16);
1331 }
1332 break;
1333 }
1334
1335 default:
1336 ShouldNotReachHere();
1337 }
1338
1339 if (patch != NULL) {
1340 patching_epilog(patch, patch_code, addr->base()->as_register(), info);
1341 }
1342
1343 if (type == T_ARRAY || type == T_OBJECT) {
1344 #ifdef _LP64
1345 if (UseCompressedOops && !wide) {
1346 __ decode_heap_oop(dest->as_register());
1347 }
1348 #endif
1349 __ verify_oop(dest->as_register());
1350 } else if (type == T_ADDRESS && addr->disp() == oopDesc::klass_offset_in_bytes()) {
1351 #ifdef _LP64
1352 if (UseCompressedClassPointers) {
1353 __ decode_klass_not_null(dest->as_register());
1354 }
1355 #endif
1356 }
1357 }
1358
1359
1360 NEEDS_CLEANUP; // This could be static?
1361 Address::ScaleFactor LIR_Assembler::array_element_size(BasicType type) const {
1362 int elem_size = type2aelembytes(type);
1363 switch (elem_size) {
1364 case 1: return Address::times_1;
1365 case 2: return Address::times_2;
1366 case 4: return Address::times_4;
1367 case 8: return Address::times_8;
1368 }
1369 ShouldNotReachHere();
|
1329 __ shll(dest_reg, 16);
1330 __ sarl(dest_reg, 16);
1331 }
1332 break;
1333 }
1334
1335 default:
1336 ShouldNotReachHere();
1337 }
1338
1339 if (patch != NULL) {
1340 patching_epilog(patch, patch_code, addr->base()->as_register(), info);
1341 }
1342
1343 if (type == T_ARRAY || type == T_OBJECT) {
1344 #ifdef _LP64
1345 if (UseCompressedOops && !wide) {
1346 __ decode_heap_oop(dest->as_register());
1347 }
1348 #endif
1349
1350 // Load barrier has not yet been applied, so ZGC can't verify the oop here
1351 if (!UseZGC) {
1352 __ verify_oop(dest->as_register());
1353 }
1354 } else if (type == T_ADDRESS && addr->disp() == oopDesc::klass_offset_in_bytes()) {
1355 #ifdef _LP64
1356 if (UseCompressedClassPointers) {
1357 __ decode_klass_not_null(dest->as_register());
1358 }
1359 #endif
1360 }
1361 }
1362
1363
1364 NEEDS_CLEANUP; // This could be static?
1365 Address::ScaleFactor LIR_Assembler::array_element_size(BasicType type) const {
1366 int elem_size = type2aelembytes(type);
1367 switch (elem_size) {
1368 case 1: return Address::times_1;
1369 case 2: return Address::times_2;
1370 case 4: return Address::times_4;
1371 case 8: return Address::times_8;
1372 }
1373 ShouldNotReachHere();
|