< prev index next >

src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp

Print this page




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();


< prev index next >