< prev index next >

src/hotspot/cpu/arm/c1_LIRGenerator_arm.cpp

Print this page

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





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