@@ -113,7 +113,7 @@ const Map<NativeType, int> nativeTypeSizes = <NativeType, int>{
113
113
NativeType .kBool: 1 ,
114
114
};
115
115
116
- /// Load, store, and elementAt are rewired to their static type for these types.
116
+ /// Load and store are rewired to their static type for these types.
117
117
const List <NativeType > optimizedTypes = [
118
118
NativeType .kBool,
119
119
NativeType .kInt8,
@@ -201,16 +201,19 @@ class FfiTransformer extends Transformer {
201
201
final Procedure allocatorAllocateMethod;
202
202
final Procedure castMethod;
203
203
final Procedure offsetByMethod;
204
- final Procedure elementAtMethod;
205
204
final Procedure addressGetter;
206
205
final Procedure structPointerGetRef;
207
206
final Procedure structPointerSetRef;
208
207
final Procedure structPointerGetElemAt;
209
208
final Procedure structPointerSetElemAt;
209
+ final Procedure structPointerElementAt;
210
+ final Procedure structPointerElementAtTearoff;
210
211
final Procedure unionPointerGetRef;
211
212
final Procedure unionPointerSetRef;
212
213
final Procedure unionPointerGetElemAt;
213
214
final Procedure unionPointerSetElemAt;
215
+ final Procedure unionPointerElementAt;
216
+ final Procedure unionPointerElementAtTearoff;
214
217
final Procedure structArrayElemAt;
215
218
final Procedure unionArrayElemAt;
216
219
final Procedure arrayArrayElemAt;
@@ -219,6 +222,8 @@ class FfiTransformer extends Transformer {
219
222
final Procedure abiSpecificIntegerPointerSetValue;
220
223
final Procedure abiSpecificIntegerPointerElemAt;
221
224
final Procedure abiSpecificIntegerPointerSetElemAt;
225
+ final Procedure abiSpecificIntegerPointerElementAt;
226
+ final Procedure abiSpecificIntegerPointerElementAtTearoff;
222
227
final Procedure abiSpecificIntegerArrayElemAt;
223
228
final Procedure abiSpecificIntegerArraySetElemAt;
224
229
final Procedure asFunctionMethod;
@@ -246,7 +251,6 @@ class FfiTransformer extends Transformer {
246
251
final Map <NativeType , Procedure > loadUnalignedMethods;
247
252
final Map <NativeType , Procedure > storeMethods;
248
253
final Map <NativeType , Procedure > storeUnalignedMethods;
249
- final Map <NativeType , Procedure > elementAtMethods;
250
254
final Procedure loadAbiSpecificIntMethod;
251
255
final Procedure loadAbiSpecificIntAtIndexMethod;
252
256
final Procedure storeAbiSpecificIntMethod;
@@ -363,8 +367,6 @@ class FfiTransformer extends Transformer {
363
367
index.getProcedure ('dart:ffi' , 'Allocator' , 'allocate' ),
364
368
castMethod = index.getProcedure ('dart:ffi' , 'Pointer' , 'cast' ),
365
369
offsetByMethod = index.getProcedure ('dart:ffi' , 'Pointer' , '_offsetBy' ),
366
- elementAtMethod =
367
- index.getProcedure ('dart:ffi' , 'Pointer' , 'elementAt' ),
368
370
addressGetter =
369
371
index.getProcedure ('dart:ffi' , 'Pointer' , 'get:address' ),
370
372
compoundTypedDataBaseField =
@@ -397,6 +399,10 @@ class FfiTransformer extends Transformer {
397
399
index.getProcedure ('dart:ffi' , 'StructPointer' , '[]' ),
398
400
structPointerSetElemAt =
399
401
index.getProcedure ('dart:ffi' , 'StructPointer' , '[]=' ),
402
+ structPointerElementAt =
403
+ index.getProcedure ('dart:ffi' , 'StructPointer' , 'elementAt' ),
404
+ structPointerElementAtTearoff = index.getProcedure ('dart:ffi' ,
405
+ 'StructPointer' , LibraryIndex .tearoffPrefix + 'elementAt' ),
400
406
unionPointerGetRef =
401
407
index.getProcedure ('dart:ffi' , 'UnionPointer' , 'get:ref' ),
402
408
unionPointerSetRef =
@@ -405,6 +411,10 @@ class FfiTransformer extends Transformer {
405
411
index.getProcedure ('dart:ffi' , 'UnionPointer' , '[]' ),
406
412
unionPointerSetElemAt =
407
413
index.getProcedure ('dart:ffi' , 'UnionPointer' , '[]=' ),
414
+ unionPointerElementAt =
415
+ index.getProcedure ('dart:ffi' , 'UnionPointer' , 'elementAt' ),
416
+ unionPointerElementAtTearoff = index.getProcedure ('dart:ffi' ,
417
+ 'UnionPointer' , LibraryIndex .tearoffPrefix + 'elementAt' ),
408
418
structArrayElemAt = index.getProcedure ('dart:ffi' , 'StructArray' , '[]' ),
409
419
unionArrayElemAt = index.getProcedure ('dart:ffi' , 'UnionArray' , '[]' ),
410
420
arrayArrayElemAt = index.getProcedure ('dart:ffi' , 'ArrayArray' , '[]' ),
@@ -418,6 +428,12 @@ class FfiTransformer extends Transformer {
418
428
index.getProcedure ('dart:ffi' , 'AbiSpecificIntegerPointer' , '[]' ),
419
429
abiSpecificIntegerPointerSetElemAt =
420
430
index.getProcedure ('dart:ffi' , 'AbiSpecificIntegerPointer' , '[]=' ),
431
+ abiSpecificIntegerPointerElementAt = index.getProcedure (
432
+ 'dart:ffi' , 'AbiSpecificIntegerPointer' , 'elementAt' ),
433
+ abiSpecificIntegerPointerElementAtTearoff = index.getProcedure (
434
+ 'dart:ffi' ,
435
+ 'AbiSpecificIntegerPointer' ,
436
+ LibraryIndex .tearoffPrefix + 'elementAt' ),
421
437
abiSpecificIntegerArrayElemAt =
422
438
index.getProcedure ('dart:ffi' , 'AbiSpecificIntegerArray' , '[]' ),
423
439
abiSpecificIntegerArraySetElemAt =
@@ -462,10 +478,6 @@ class FfiTransformer extends Transformer {
462
478
return index.getTopLevelProcedure (
463
479
'dart:ffi' , "_store${name }Unaligned" );
464
480
}),
465
- elementAtMethods = Map .fromIterable (optimizedTypes, value: (t) {
466
- final name = nativeTypeClassNames[t];
467
- return index.getTopLevelProcedure ('dart:ffi' , "_elementAt$name " );
468
- }),
469
481
loadAbiSpecificIntMethod =
470
482
index.getTopLevelProcedure ('dart:ffi' , "_loadAbiSpecificInt" ),
471
483
loadAbiSpecificIntAtIndexMethod = index.getTopLevelProcedure (
0 commit comments