@@ -103,13 +103,10 @@ DEFINE_NATIVE_ENTRY(Ffi_address, 0, 1) {
103
103
static RawObject* LoadValueNumeric (Zone* zone,
104
104
const Pointer& target,
105
105
classid_t type_cid,
106
- const Integer& index ) {
106
+ const Integer& offset ) {
107
107
// TODO(36370): Make representation consistent with kUnboxedFfiIntPtr.
108
108
const size_t address =
109
- target.NativeAddress () +
110
- static_cast <intptr_t >(index .AsInt64Value ()) *
111
- compiler::ffi::NativeType::FromTypedDataClassId (type_cid, zone)
112
- .SizeInBytes ();
109
+ target.NativeAddress () + static_cast <intptr_t >(offset.AsInt64Value ());
113
110
switch (type_cid) {
114
111
case kFfiInt8Cid :
115
112
return Integer::New (*reinterpret_cast <int8_t *>(address));
@@ -141,15 +138,15 @@ static RawObject* LoadValueNumeric(Zone* zone,
141
138
#define DEFINE_NATIVE_ENTRY_LOAD (type ) \
142
139
DEFINE_NATIVE_ENTRY (Ffi_load##type, 0 , 2 ) { \
143
140
GET_NON_NULL_NATIVE_ARGUMENT (Pointer, pointer, arguments->NativeArgAt (0 )); \
144
- GET_NON_NULL_NATIVE_ARGUMENT (Integer, index , arguments->NativeArgAt (1 )); \
145
- return LoadValueNumeric (zone, pointer, kFfi ##type##Cid, index ); \
141
+ GET_NON_NULL_NATIVE_ARGUMENT (Integer, offset , arguments->NativeArgAt (1 )); \
142
+ return LoadValueNumeric (zone, pointer, kFfi ##type##Cid, offset); \
146
143
}
147
144
CLASS_LIST_FFI_NUMERIC (DEFINE_NATIVE_ENTRY_LOAD)
148
145
#undef DEFINE_NATIVE_ENTRY_LOAD
149
146
150
147
DEFINE_NATIVE_ENTRY (Ffi_loadPointer, 1 , 2 ) {
151
148
GET_NON_NULL_NATIVE_ARGUMENT (Pointer, pointer, arguments->NativeArgAt (0 ));
152
- GET_NON_NULL_NATIVE_ARGUMENT (Integer, index , arguments->NativeArgAt (1 ));
149
+ GET_NON_NULL_NATIVE_ARGUMENT (Integer, offset , arguments->NativeArgAt (1 ));
153
150
154
151
const auto & pointer_type_arg =
155
152
AbstractType::Handle (zone, pointer.type_argument ());
@@ -159,8 +156,7 @@ DEFINE_NATIVE_ENTRY(Ffi_loadPointer, 1, 2) {
159
156
160
157
// TODO(36370): Make representation consistent with kUnboxedFfiIntPtr.
161
158
const size_t address =
162
- pointer.NativeAddress () + static_cast <intptr_t >(index .AsInt64Value ()) *
163
- SizeOf (pointer_type_arg, zone);
159
+ pointer.NativeAddress () + static_cast <intptr_t >(offset.AsInt64Value ());
164
160
165
161
return Pointer::New (type_arg, *reinterpret_cast <uword*>(address));
166
162
}
@@ -209,14 +205,11 @@ DEFINE_NATIVE_ENTRY(Ffi_loadStruct, 0, 2) {
209
205
static void StoreValueNumeric (Zone* zone,
210
206
const Pointer& pointer,
211
207
classid_t type_cid,
212
- const Integer& index ,
208
+ const Integer& offset ,
213
209
const Instance& new_value) {
214
210
// TODO(36370): Make representation consistent with kUnboxedFfiIntPtr.
215
211
const size_t address =
216
- pointer.NativeAddress () +
217
- static_cast <intptr_t >(index .AsInt64Value ()) *
218
- compiler::ffi::NativeType::FromTypedDataClassId (type_cid, zone)
219
- .SizeInBytes ();
212
+ pointer.NativeAddress () + static_cast <intptr_t >(offset.AsInt64Value ());
220
213
switch (type_cid) {
221
214
case kFfiInt8Cid :
222
215
*reinterpret_cast <int8_t *>(address) = AsInteger (new_value).AsInt64Value ();
@@ -267,17 +260,17 @@ static void StoreValueNumeric(Zone* zone,
267
260
#define DEFINE_NATIVE_ENTRY_STORE (type ) \
268
261
DEFINE_NATIVE_ENTRY (Ffi_store##type, 0 , 3 ) { \
269
262
GET_NON_NULL_NATIVE_ARGUMENT (Pointer, pointer, arguments->NativeArgAt (0 )); \
270
- GET_NON_NULL_NATIVE_ARGUMENT (Integer, index , arguments->NativeArgAt (1 )); \
263
+ GET_NON_NULL_NATIVE_ARGUMENT (Integer, offset , arguments->NativeArgAt (1 )); \
271
264
GET_NON_NULL_NATIVE_ARGUMENT (Instance, value, arguments->NativeArgAt (2 )); \
272
- StoreValueNumeric (zone, pointer, kFfi ##type##Cid, index , value); \
265
+ StoreValueNumeric (zone, pointer, kFfi ##type##Cid, offset , value); \
273
266
return Object::null (); \
274
267
}
275
268
CLASS_LIST_FFI_NUMERIC (DEFINE_NATIVE_ENTRY_STORE)
276
269
#undef DEFINE_NATIVE_ENTRY_STORE
277
270
278
271
DEFINE_NATIVE_ENTRY (Ffi_storePointer, 0 , 3 ) {
279
272
GET_NON_NULL_NATIVE_ARGUMENT (Pointer, pointer, arguments->NativeArgAt (0 ));
280
- GET_NON_NULL_NATIVE_ARGUMENT (Integer, index , arguments->NativeArgAt (1 ));
273
+ GET_NON_NULL_NATIVE_ARGUMENT (Integer, offset , arguments->NativeArgAt (1 ));
281
274
GET_NON_NULL_NATIVE_ARGUMENT (Pointer, new_value, arguments->NativeArgAt (2 ));
282
275
AbstractType& pointer_type_arg =
283
276
AbstractType::Handle (pointer.type_argument ());
@@ -296,8 +289,7 @@ DEFINE_NATIVE_ENTRY(Ffi_storePointer, 0, 3) {
296
289
ASSERT (IsPointerType (pointer_type_arg));
297
290
// TODO(36370): Make representation consistent with kUnboxedFfiIntPtr.
298
291
const size_t address =
299
- pointer.NativeAddress () + static_cast <intptr_t >(index .AsInt64Value ()) *
300
- SizeOf (pointer_type_arg, zone);
292
+ pointer.NativeAddress () + static_cast <intptr_t >(offset.AsInt64Value ());
301
293
*reinterpret_cast <uword*>(address) = new_value.NativeAddress ();
302
294
return Object::null ();
303
295
}
0 commit comments