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 #if INCLUDE_ZGC
1350 // Load barrier not yet applied, so a verification here would fail
1351 if (!UseZGC)
1352 #endif
1353 {
1354 __ verify_oop(dest->as_register());
1355 }
1356 } else if (type == T_ADDRESS && addr->disp() == oopDesc::klass_offset_in_bytes()) {
1357 #ifdef _LP64
1358 if (UseCompressedClassPointers) {
1359 __ decode_klass_not_null(dest->as_register());
1360 }
1361 #endif
1362 }
1363 }
1364
1365
1366 NEEDS_CLEANUP; // This could be static?
1367 Address::ScaleFactor LIR_Assembler::array_element_size(BasicType type) const {
1368 int elem_size = type2aelembytes(type);
1369 switch (elem_size) {
1370 case 1: return Address::times_1;
1371 case 2: return Address::times_2;
1372 case 4: return Address::times_4;
1373 case 8: return Address::times_8;
1374 }
1375 ShouldNotReachHere();
|