Skip to content

Commit 85a87ca

Browse files
committed
[vm/ffi] Add common C types
We're adding these types to `dart:ffi` rather than `package:ffi` so that they can be used with `FfiNative`s. Adds `NativeType`s for the following C types: * char * unsigned char * signed char * short * unsigned short * int * unsigned int * long * unsigned long * long long * unsigned long long * uintptr_t * size_t * wchar_t Because the C standard only defines minimum sizes for many of these types, future platforms might diverge from the typical size even if all platforms currently agree on a size. To avoid having to reification later, we define all types as AbiSpecificIntegers rather than typedefs, even if all current target platforms agree on the size. Closes: #36140 TEST=tests/ffi/c_types_test.dart Change-Id: Ie97d253856d787386529231e8060f879069be886 Cq-Include-Trybots: luci.dart.try:dart-sdk-linux-try,dart-sdk-mac-try,dart-sdk-win-try,vm-ffi-android-debug-arm64c-try,vm-ffi-android-debug-arm-try,vm-canary-linux-debug-try,vm-fuchsia-release-x64-try,vm-kernel-gcc-linux-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-mac-debug-x64-try,vm-kernel-mac-release-arm64-try,vm-kernel-nnbd-win-release-ia32-try,vm-kernel-nnbd-win-release-x64-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-win-release-x64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/228541 Reviewed-by: Martin Kustermann <[email protected]>
1 parent dbd91bb commit 85a87ca

File tree

43 files changed

+916
-496
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+916
-496
lines changed

benchmarks/FfiMemory/dart/FfiMemory.dart

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -15,36 +15,6 @@ import 'dart:typed_data';
1515
import 'package:ffi/ffi.dart';
1616
import 'package:benchmark_harness/benchmark_harness.dart';
1717

18-
/// Represents a native unsigned pointer-sized integer in C.
19-
///
20-
/// [UintPtr] is not constructible in the Dart code and serves purely as marker in
21-
/// type signatures.
22-
@AbiSpecificIntegerMapping({
23-
Abi.androidArm: Uint32(),
24-
Abi.androidArm64: Uint64(),
25-
Abi.androidIA32: Uint32(),
26-
Abi.androidX64: Uint64(),
27-
Abi.fuchsiaArm64: Uint64(),
28-
Abi.fuchsiaX64: Uint64(),
29-
Abi.iosArm: Uint32(),
30-
Abi.iosArm64: Uint64(),
31-
Abi.iosX64: Uint64(),
32-
Abi.linuxArm: Uint32(),
33-
Abi.linuxArm64: Uint64(),
34-
Abi.linuxIA32: Uint32(),
35-
Abi.linuxX64: Uint64(),
36-
Abi.linuxRiscv32: Uint32(),
37-
Abi.linuxRiscv64: Uint64(),
38-
Abi.macosArm64: Uint64(),
39-
Abi.macosX64: Uint64(),
40-
Abi.windowsArm64: Uint64(),
41-
Abi.windowsIA32: Uint32(),
42-
Abi.windowsX64: Uint64(),
43-
})
44-
class UintPtr extends AbiSpecificInteger {
45-
const UintPtr();
46-
}
47-
4818
//
4919
// Pointer store.
5020
//

benchmarks/FfiMemory/dart2/FfiMemory.dart

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17,36 +17,6 @@ import 'dart:typed_data';
1717
import 'package:ffi/ffi.dart';
1818
import 'package:benchmark_harness/benchmark_harness.dart';
1919

20-
/// Represents a native unsigned pointer-sized integer in C.
21-
///
22-
/// [UintPtr] is not constructible in the Dart code and serves purely as marker in
23-
/// type signatures.
24-
@AbiSpecificIntegerMapping({
25-
Abi.androidArm: Uint32(),
26-
Abi.androidArm64: Uint64(),
27-
Abi.androidIA32: Uint32(),
28-
Abi.androidX64: Uint64(),
29-
Abi.fuchsiaArm64: Uint64(),
30-
Abi.fuchsiaX64: Uint64(),
31-
Abi.iosArm: Uint32(),
32-
Abi.iosArm64: Uint64(),
33-
Abi.iosX64: Uint64(),
34-
Abi.linuxArm: Uint32(),
35-
Abi.linuxArm64: Uint64(),
36-
Abi.linuxIA32: Uint32(),
37-
Abi.linuxX64: Uint64(),
38-
Abi.linuxRiscv32: Uint32(),
39-
Abi.linuxRiscv64: Uint64(),
40-
Abi.macosArm64: Uint64(),
41-
Abi.macosX64: Uint64(),
42-
Abi.windowsArm64: Uint64(),
43-
Abi.windowsIA32: Uint32(),
44-
Abi.windowsX64: Uint64(),
45-
})
46-
class UintPtr extends AbiSpecificInteger {
47-
const UintPtr();
48-
}
49-
5020
//
5121
// Pointer store.
5222
//

pkg/front_end/testcases/general/ffi_sample.dart.weak.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ constants {
4040

4141
Constructor coverage from constants:
4242
org-dartlang-testcase:///ffi_sample.dart:
43-
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:144:9)
43+
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:114:9)
4444
- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
4545
- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
4646
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

pkg/front_end/testcases/general/ffi_sample.dart.weak.modular.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ constants {
4040

4141
Constructor coverage from constants:
4242
org-dartlang-testcase:///ffi_sample.dart:
43-
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:144:9)
43+
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:114:9)
4444
- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
4545
- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
4646
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

pkg/front_end/testcases/general/ffi_sample.dart.weak.transformed.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ constants {
7474

7575
Constructor coverage from constants:
7676
org-dartlang-testcase:///ffi_sample.dart:
77-
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:144:9)
77+
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:114:9)
7878
- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
7979
- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
8080
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.1.expect

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ additionalExports = (ffi::nullptr,
5151
ffi::Bool,
5252
ffi::BoolArray,
5353
ffi::BoolPointer,
54+
ffi::Char,
5455
ffi::DartRepresentationOf,
5556
ffi::Dart_CObject,
5657
ffi::Double,
@@ -63,6 +64,7 @@ additionalExports = (ffi::nullptr,
6364
ffi::FloatArray,
6465
ffi::FloatPointer,
6566
ffi::Handle,
67+
ffi::Int,
6668
ffi::Int16,
6769
ffi::Int16Array,
6870
ffi::Int16Pointer,
@@ -76,6 +78,8 @@ additionalExports = (ffi::nullptr,
7678
ffi::Int8Array,
7779
ffi::Int8Pointer,
7880
ffi::IntPtr,
81+
ffi::Long,
82+
ffi::LongLong,
7983
ffi::NativeApi,
8084
ffi::NativeFunction,
8185
ffi::NativeFunctionPointer,
@@ -86,6 +90,9 @@ additionalExports = (ffi::nullptr,
8690
ffi::Pointer,
8791
ffi::PointerArray,
8892
ffi::PointerPointer,
93+
ffi::Short,
94+
ffi::SignedChar,
95+
ffi::Size,
8996
ffi::Struct,
9097
ffi::StructArray,
9198
ffi::StructPointer,
@@ -101,11 +108,18 @@ additionalExports = (ffi::nullptr,
101108
ffi::Uint8,
102109
ffi::Uint8Array,
103110
ffi::Uint8Pointer,
111+
ffi::UintPtr,
104112
ffi::Union,
105113
ffi::UnionArray,
106114
ffi::UnionPointer,
115+
ffi::UnsignedChar,
116+
ffi::UnsignedInt,
117+
ffi::UnsignedLong,
118+
ffi::UnsignedLongLong,
119+
ffi::UnsignedShort,
107120
ffi::Unsized,
108-
ffi::Void)
121+
ffi::Void,
122+
ffi::WChar)
109123

110124
export "org-dartlang-test:///lib3.dart";
111125

@@ -127,6 +141,7 @@ additionalExports = (ffi::nullptr,
127141
ffi::Bool,
128142
ffi::BoolArray,
129143
ffi::BoolPointer,
144+
ffi::Char,
130145
ffi::DartRepresentationOf,
131146
ffi::Dart_CObject,
132147
ffi::Double,
@@ -139,6 +154,7 @@ additionalExports = (ffi::nullptr,
139154
ffi::FloatArray,
140155
ffi::FloatPointer,
141156
ffi::Handle,
157+
ffi::Int,
142158
ffi::Int16,
143159
ffi::Int16Array,
144160
ffi::Int16Pointer,
@@ -152,6 +168,8 @@ additionalExports = (ffi::nullptr,
152168
ffi::Int8Array,
153169
ffi::Int8Pointer,
154170
ffi::IntPtr,
171+
ffi::Long,
172+
ffi::LongLong,
155173
ffi::NativeApi,
156174
ffi::NativeFunction,
157175
ffi::NativeFunctionPointer,
@@ -162,6 +180,9 @@ additionalExports = (ffi::nullptr,
162180
ffi::Pointer,
163181
ffi::PointerArray,
164182
ffi::PointerPointer,
183+
ffi::Short,
184+
ffi::SignedChar,
185+
ffi::Size,
165186
ffi::Struct,
166187
ffi::StructArray,
167188
ffi::StructPointer,
@@ -177,11 +198,18 @@ additionalExports = (ffi::nullptr,
177198
ffi::Uint8,
178199
ffi::Uint8Array,
179200
ffi::Uint8Pointer,
201+
ffi::UintPtr,
180202
ffi::Union,
181203
ffi::UnionArray,
182204
ffi::UnionPointer,
205+
ffi::UnsignedChar,
206+
ffi::UnsignedInt,
207+
ffi::UnsignedLong,
208+
ffi::UnsignedLongLong,
209+
ffi::UnsignedShort,
183210
ffi::Unsized,
184-
ffi::Void)
211+
ffi::Void,
212+
ffi::WChar)
185213

186214
export "dart:ffi";
187215

pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.2.expect

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ additionalExports = (ffi::nullptr,
5151
ffi::Bool,
5252
ffi::BoolArray,
5353
ffi::BoolPointer,
54+
ffi::Char,
5455
ffi::DartRepresentationOf,
5556
ffi::Dart_CObject,
5657
ffi::Double,
@@ -63,6 +64,7 @@ additionalExports = (ffi::nullptr,
6364
ffi::FloatArray,
6465
ffi::FloatPointer,
6566
ffi::Handle,
67+
ffi::Int,
6668
ffi::Int16,
6769
ffi::Int16Array,
6870
ffi::Int16Pointer,
@@ -76,6 +78,8 @@ additionalExports = (ffi::nullptr,
7678
ffi::Int8Array,
7779
ffi::Int8Pointer,
7880
ffi::IntPtr,
81+
ffi::Long,
82+
ffi::LongLong,
7983
ffi::NativeApi,
8084
ffi::NativeFunction,
8185
ffi::NativeFunctionPointer,
@@ -86,6 +90,9 @@ additionalExports = (ffi::nullptr,
8690
ffi::Pointer,
8791
ffi::PointerArray,
8892
ffi::PointerPointer,
93+
ffi::Short,
94+
ffi::SignedChar,
95+
ffi::Size,
8996
ffi::Struct,
9097
ffi::StructArray,
9198
ffi::StructPointer,
@@ -101,11 +108,18 @@ additionalExports = (ffi::nullptr,
101108
ffi::Uint8,
102109
ffi::Uint8Array,
103110
ffi::Uint8Pointer,
111+
ffi::UintPtr,
104112
ffi::Union,
105113
ffi::UnionArray,
106114
ffi::UnionPointer,
115+
ffi::UnsignedChar,
116+
ffi::UnsignedInt,
117+
ffi::UnsignedLong,
118+
ffi::UnsignedLongLong,
119+
ffi::UnsignedShort,
107120
ffi::Unsized,
108-
ffi::Void)
121+
ffi::Void,
122+
ffi::WChar)
109123

110124
export "org-dartlang-test:///lib3.dart";
111125

@@ -127,6 +141,7 @@ additionalExports = (ffi::nullptr,
127141
ffi::Bool,
128142
ffi::BoolArray,
129143
ffi::BoolPointer,
144+
ffi::Char,
130145
ffi::DartRepresentationOf,
131146
ffi::Dart_CObject,
132147
ffi::Double,
@@ -139,6 +154,7 @@ additionalExports = (ffi::nullptr,
139154
ffi::FloatArray,
140155
ffi::FloatPointer,
141156
ffi::Handle,
157+
ffi::Int,
142158
ffi::Int16,
143159
ffi::Int16Array,
144160
ffi::Int16Pointer,
@@ -152,6 +168,8 @@ additionalExports = (ffi::nullptr,
152168
ffi::Int8Array,
153169
ffi::Int8Pointer,
154170
ffi::IntPtr,
171+
ffi::Long,
172+
ffi::LongLong,
155173
ffi::NativeApi,
156174
ffi::NativeFunction,
157175
ffi::NativeFunctionPointer,
@@ -162,6 +180,9 @@ additionalExports = (ffi::nullptr,
162180
ffi::Pointer,
163181
ffi::PointerArray,
164182
ffi::PointerPointer,
183+
ffi::Short,
184+
ffi::SignedChar,
185+
ffi::Size,
165186
ffi::Struct,
166187
ffi::StructArray,
167188
ffi::StructPointer,
@@ -177,11 +198,18 @@ additionalExports = (ffi::nullptr,
177198
ffi::Uint8,
178199
ffi::Uint8Array,
179200
ffi::Uint8Pointer,
201+
ffi::UintPtr,
180202
ffi::Union,
181203
ffi::UnionArray,
182204
ffi::UnionPointer,
205+
ffi::UnsignedChar,
206+
ffi::UnsignedInt,
207+
ffi::UnsignedLong,
208+
ffi::UnsignedLongLong,
209+
ffi::UnsignedShort,
183210
ffi::Unsized,
184-
ffi::Void)
211+
ffi::Void,
212+
ffi::WChar)
185213

186214
export "dart:ffi";
187215

pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ constants {
3434

3535
Constructor coverage from constants:
3636
org-dartlang-testcase:///ffi_sample.dart:
37-
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:144:9)
37+
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:114:9)
3838
- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
3939
- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
4040
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.transformed.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ constants {
6565

6666
Constructor coverage from constants:
6767
org-dartlang-testcase:///ffi_sample.dart:
68-
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:144:9)
68+
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:114:9)
6969
- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
7070
- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
7171
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ constants {
3434

3535
Constructor coverage from constants:
3636
org-dartlang-testcase:///ffi_sample.dart:
37-
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:144:9)
37+
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:114:9)
3838
- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
3939
- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
4040
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.modular.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ constants {
3434

3535
Constructor coverage from constants:
3636
org-dartlang-testcase:///ffi_sample.dart:
37-
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:144:9)
37+
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:114:9)
3838
- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
3939
- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
4040
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.transformed.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ constants {
6565

6666
Constructor coverage from constants:
6767
org-dartlang-testcase:///ffi_sample.dart:
68-
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:144:9)
68+
- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:114:9)
6969
- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
7070
- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
7171
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ constants {
2525

2626
Constructor coverage from constants:
2727
org-dartlang-testcase:///ffi_struct_inline_array.dart:
28-
- _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:138:9)
28+
- _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:139:9)
2929
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.transformed.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,5 @@ constants {
5252

5353
Constructor coverage from constants:
5454
org-dartlang-testcase:///ffi_struct_inline_array.dart:
55-
- _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:138:9)
55+
- _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:139:9)
5656
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ constants {
2525

2626
Constructor coverage from constants:
2727
org-dartlang-testcase:///ffi_struct_inline_array.dart:
28-
- _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:138:9)
28+
- _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:139:9)
2929
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.modular.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ constants {
2525

2626
Constructor coverage from constants:
2727
org-dartlang-testcase:///ffi_struct_inline_array.dart:
28-
- _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:138:9)
28+
- _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:139:9)
2929
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)

0 commit comments

Comments
 (0)