@@ -1305,7 +1305,8 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod(
1305
1305
body += LoadLocal (arg_pointer);
1306
1306
body += CheckNullOptimized (String::ZoneHandle (Z, function.name ()));
1307
1307
// No GC from here til LoadIndexed.
1308
- body += LoadUntagged (compiler::target::PointerBase::data_offset ());
1308
+ body += LoadNativeField (Slot::PointerBase_data ());
1309
+ body += ConvertUnboxedToUntagged (kUnboxedIntPtr );
1309
1310
body += LoadLocal (arg_offset_not_null);
1310
1311
body += UnboxTruncate (kUnboxedFfiIntPtr );
1311
1312
body += LoadIndexed (typed_data_cid, /* index_scale=*/ 1 ,
@@ -1373,14 +1374,13 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod(
1373
1374
body += LoadLocal (arg_pointer); // Pointer.
1374
1375
body += CheckNullOptimized (String::ZoneHandle (Z, function.name ()));
1375
1376
// No GC from here til StoreIndexed.
1376
- body += LoadUntagged (compiler::target::PointerBase::data_offset ());
1377
+ body += LoadNativeField (Slot::PointerBase_data ());
1378
+ body += ConvertUnboxedToUntagged (kUnboxedIntPtr );
1377
1379
body += LoadLocal (arg_offset_not_null);
1378
1380
body += UnboxTruncate (kUnboxedFfiIntPtr );
1379
1381
body += LoadLocal (arg_value_not_null);
1380
1382
if (kind == MethodRecognizer::kFfiStorePointer ) {
1381
- // This can only be Pointer, so it is always safe to LoadUntagged.
1382
- body += LoadUntagged (compiler::target::PointerBase::data_offset ());
1383
- body += ConvertUntaggedToUnboxed (kUnboxedFfiIntPtr );
1383
+ body += LoadNativeField (Slot::PointerBase_data ());
1384
1384
} else {
1385
1385
// Avoid any unnecessary (and potentially deoptimizing) int
1386
1386
// conversions by using the representation consumed by StoreIndexed.
@@ -1417,9 +1417,7 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod(
1417
1417
ASSERT_EQUAL (function.NumParameters (), 1 );
1418
1418
body += LoadLocal (parsed_function_->RawParameterVariable (0 )); // Pointer.
1419
1419
body += CheckNullOptimized (String::ZoneHandle (Z, function.name ()));
1420
- // This can only be Pointer, so it is always safe to LoadUntagged.
1421
- body += LoadUntagged (compiler::target::PointerBase::data_offset ());
1422
- body += ConvertUntaggedToUnboxed (kUnboxedFfiIntPtr );
1420
+ body += LoadNativeField (Slot::PointerBase_data ());
1423
1421
body += Box (kUnboxedFfiIntPtr );
1424
1422
} break ;
1425
1423
case MethodRecognizer::kHas63BitSmis : {
@@ -1501,8 +1499,7 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod(
1501
1499
// Initialize the result's data pointer field.
1502
1500
body += LoadLocal (typed_data_object);
1503
1501
body += LoadLocal (arg_pointer);
1504
- body += LoadUntagged (compiler::target::PointerBase::data_offset ());
1505
- body += ConvertUntaggedToUnboxed (kUnboxedIntPtr );
1502
+ body += LoadNativeField (Slot::PointerBase_data ());
1506
1503
body += StoreNativeField (Slot::PointerBase_data (),
1507
1504
StoreFieldInstr::Kind::kInitializing ,
1508
1505
kNoStoreBarrier );
@@ -1716,8 +1713,7 @@ Fragment FlowGraphBuilder::BuildTypedDataViewFactoryConstructor(
1716
1713
// instructions!
1717
1714
body += LoadLocal (view_object);
1718
1715
body += LoadLocal (typed_data);
1719
- body += LoadUntagged (compiler::target::PointerBase::data_offset ());
1720
- body += ConvertUntaggedToUnboxed (kUnboxedIntPtr );
1716
+ body += LoadNativeField (Slot::PointerBase_data ());
1721
1717
body += LoadLocal (offset_in_bytes);
1722
1718
body += UnboxSmiToIntptr ();
1723
1719
body += AddIntptrIntegers ();
@@ -4401,7 +4397,8 @@ Fragment FlowGraphBuilder::CopyFromCompoundToStack(
4401
4397
for (intptr_t i = 0 ; i < num_defs; i++) {
4402
4398
body += LoadLocal (variable);
4403
4399
body += LoadTypedDataBaseFromCompound ();
4404
- body += LoadUntagged (compiler::target::PointerBase::data_offset ());
4400
+ body += LoadNativeField (Slot::PointerBase_data ());
4401
+ body += ConvertUnboxedToUntagged (kUnboxedIntPtr );
4405
4402
body += IntConstant (offset_in_bytes);
4406
4403
const Representation representation = representations[i];
4407
4404
offset_in_bytes += RepresentationUtils::ValueSize (representation);
@@ -4423,7 +4420,8 @@ Fragment FlowGraphBuilder::PopFromStackToTypedDataBase(
4423
4420
for (intptr_t i = 0 ; i < num_defs; i++) {
4424
4421
const Representation representation = representations[i];
4425
4422
body += LoadLocal (uint8_list);
4426
- body += LoadUntagged (compiler::target::PointerBase::data_offset ());
4423
+ body += LoadNativeField (Slot::PointerBase_data ());
4424
+ body += ConvertUnboxedToUntagged (kUnboxedIntPtr );
4427
4425
body += IntConstant (offset_in_bytes);
4428
4426
body += LoadLocal (definitions->At (i));
4429
4427
body += StoreIndexedTypedDataUnboxed (representation, /* index_scale=*/ 1 ,
@@ -4477,7 +4475,8 @@ Fragment FlowGraphBuilder::CopyFromTypedDataBaseToUnboxedAddress(
4477
4475
const classid_t typed_data_cidd = typed_data_cid (chunk_sizee);
4478
4476
4479
4477
body += LoadLocal (typed_data_base);
4480
- body += LoadUntagged (compiler::target::PointerBase::data_offset ());
4478
+ body += LoadNativeField (Slot::PointerBase_data ());
4479
+ body += ConvertUnboxedToUntagged (kUnboxedIntPtr );
4481
4480
body += IntConstant (offset_in_bytes);
4482
4481
body += LoadIndexed (typed_data_cidd, /* index_scale=*/ 1 ,
4483
4482
/* index_unboxed=*/ false );
@@ -4522,7 +4521,8 @@ Fragment FlowGraphBuilder::CopyFromUnboxedAddressToTypedDataBase(
4522
4521
LocalVariable* chunk_value = MakeTemporary (" chunk_value" );
4523
4522
4524
4523
body += LoadLocal (typed_data_base);
4525
- body += LoadUntagged (compiler::target::PointerBase::data_offset ());
4524
+ body += LoadNativeField (Slot::PointerBase_data ());
4525
+ body += ConvertUnboxedToUntagged (kUnboxedIntPtr );
4526
4526
body += IntConstant (offset_in_bytes);
4527
4527
body += LoadLocal (chunk_value);
4528
4528
body += StoreIndexedTypedData (typed_data_cidd, /* index_scale=*/ 1 ,
@@ -4678,9 +4678,7 @@ Fragment FlowGraphBuilder::FfiConvertPrimitiveToNative(
4678
4678
4679
4679
Fragment body;
4680
4680
if (marshaller.IsPointer (arg_index)) {
4681
- // This can only be Pointer, so it is always safe to LoadUntagged.
4682
- body += LoadUntagged (compiler::target::PointerBase::data_offset ());
4683
- body += ConvertUntaggedToUnboxed (kUnboxedFfiIntPtr );
4681
+ body += LoadNativeField (Slot::PointerBase_data ());
4684
4682
} else if (marshaller.IsHandle (arg_index)) {
4685
4683
body += WrapHandle ();
4686
4684
} else {
@@ -4816,9 +4814,7 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfFfiNative(const Function& function) {
4816
4814
Z, Class::Handle (IG->object_store ()->ffi_pointer_class ()))
4817
4815
->context_variables ()[0 ]));
4818
4816
4819
- // This can only be Pointer, so it is always safe to LoadUntagged.
4820
- body += LoadUntagged (compiler::target::PointerBase::data_offset ());
4821
- body += ConvertUntaggedToUnboxed (kUnboxedFfiIntPtr );
4817
+ body += LoadNativeField (Slot::PointerBase_data ());
4822
4818
4823
4819
if (marshaller.PassTypedData ()) {
4824
4820
body += LoadLocal (typed_data);
0 commit comments