< prev index next >

src/hotspot/cpu/arm/c1_LIRGenerator_arm.cpp

Print this page

1311 }
1312 
1313 void LIRGenerator::volatile_field_load(LIR_Address* address, LIR_Opr result,
1314                                        CodeEmitInfo* info) {
1315   if (result->is_double_cpu()) {
1316     assert(address->index()->is_illegal(), "should have a constant displacement");
1317     LIR_Address* load_addr = NULL;
1318     if (address->disp() != 0) {
1319       LIR_Opr tmp = new_pointer_register();
1320       add_large_constant(address->base(), address->disp(), tmp);
1321       load_addr = new LIR_Address(tmp, (intx)0, address->type());
1322     } else {
1323       // address->disp() can be 0, if the address is referenced using the unsafe intrinsic
1324       load_addr = address;
1325     }
1326     __ volatile_load_mem_reg(load_addr, result, info);
1327     return;
1328   }
1329   __ load(address, result, info, lir_patch_none);
1330 }





1311 }
1312 
1313 void LIRGenerator::volatile_field_load(LIR_Address* address, LIR_Opr result,
1314                                        CodeEmitInfo* info) {
1315   if (result->is_double_cpu()) {
1316     assert(address->index()->is_illegal(), "should have a constant displacement");
1317     LIR_Address* load_addr = NULL;
1318     if (address->disp() != 0) {
1319       LIR_Opr tmp = new_pointer_register();
1320       add_large_constant(address->base(), address->disp(), tmp);
1321       load_addr = new LIR_Address(tmp, (intx)0, address->type());
1322     } else {
1323       // address->disp() can be 0, if the address is referenced using the unsafe intrinsic
1324       load_addr = address;
1325     }
1326     __ volatile_load_mem_reg(load_addr, result, info);
1327     return;
1328   }
1329   __ load(address, result, info, lir_patch_none);
1330 }
1331 
1332 void LIRGenerator::do_continuation_doYield(Intrinsic* x) {
1333   fatal("Continuation.doYield intrinsic is not implemented on this platform");
1334 }
< prev index next >