Skip to content

Commit fca959e

Browse files
dcharkescommit-bot@chromium.org
authored andcommitted
[vm/ffi] Add class to vm:ffi:struct-fields pragma
This CL changes `@pragma('vm:ffi:struct-fields', [...])` to `@pragma('vm:ffi:struct-fields', _FfiStructLayout([...]))` which makes it easier to add more data in subsequent CLs. Extends `FindPragma` to allow returning multiple matched pragma's, so that we can filter them. (In this case to avoid matching user-defined pragma's that do not have an instance of the private class.) Separated out from https://dart-review.googlesource.com/c/sdk/+/183640 because of the extra constant in existing expectation files. Bug: #35763 Bug: #38158 TEST=tests/ffi(_2)/*_by_value_*_test.dart Change-Id: Idef9f82e9b53c2a32dffabcec19669eae550fe2f Cq-Include-Trybots: luci.dart.try:front-end-nnbd-mac-release-x64-try,front-end-linux-release-x64-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-nnbd-linux-debug-x64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184181 Reviewed-by: Martin Kustermann <[email protected]> Reviewed-by: Clement Skau <[email protected]>
1 parent c749c0e commit fca959e

22 files changed

+290
-205
lines changed

pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class Coordinate extends Struct {
2020

2121
Pointer<Coordinate> next;
2222

23-
factory Coordinate.allocate(
23+
factory Coordinate.allocate(
2424
Allocator allocator, double x, double y, Pointer<Coordinate> next) {
2525
return allocator<Coordinate>().ref
2626
..x = x

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

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ import "dart:ffi";
1212
import "package:ffi/ffi.dart";
1313

1414
@#C3
15-
@#C8
15+
@#C9
1616
class Coordinate extends ffi::Struct {
1717
@#C3
18-
static final field core::int* #sizeOf = (#C11).{core::List::[]}(ffi::_abi());
18+
static final field core::int* #sizeOf = (#C12).{core::List::[]}(ffi::_abi());
1919
@#C3
2020
constructor #fromTypedDataBase(dynamic #pointer) → dynamic
2121
: super ffi::Struct::_fromPointer(#pointer)
@@ -39,17 +39,17 @@ class Coordinate extends ffi::Struct {
3939
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
4040
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
4141
get x() → core::double*
42-
return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C13).{core::List::[]}(ffi::_abi()));
42+
return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C14).{core::List::[]}(ffi::_abi()));
4343
set x(core::double* #v) → void
44-
return ffi::_storeDouble(this.{ffi::Struct::_addressOf}, (#C13).{core::List::[]}(ffi::_abi()), #v);
44+
return ffi::_storeDouble(this.{ffi::Struct::_addressOf}, (#C14).{core::List::[]}(ffi::_abi()), #v);
4545
get y() → core::double*
46-
return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C15).{core::List::[]}(ffi::_abi()));
46+
return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C16).{core::List::[]}(ffi::_abi()));
4747
set y(core::double* #v) → void
48-
return ffi::_storeDouble(this.{ffi::Struct::_addressOf}, (#C15).{core::List::[]}(ffi::_abi()), #v);
48+
return ffi::_storeDouble(this.{ffi::Struct::_addressOf}, (#C16).{core::List::[]}(ffi::_abi()), #v);
4949
get next() → ffi::Pointer<self::Coordinate*>*
50-
return ffi::_fromAddress<self::Coordinate*>(ffi::_loadIntPtr(this.{ffi::Struct::_addressOf}, (#C17).{core::List::[]}(ffi::_abi())));
50+
return ffi::_fromAddress<self::Coordinate*>(ffi::_loadIntPtr(this.{ffi::Struct::_addressOf}, (#C18).{core::List::[]}(ffi::_abi())));
5151
set next(ffi::Pointer<self::Coordinate*>* #v) → void
52-
return ffi::_storeIntPtr(this.{ffi::Struct::_addressOf}, (#C17).{core::List::[]}(ffi::_abi()), #v.{ffi::Pointer::address});
52+
return ffi::_storeIntPtr(this.{ffi::Struct::_addressOf}, (#C18).{core::List::[]}(ffi::_abi()), #v.{ffi::Pointer::address});
5353
}
5454
static method main() → dynamic {}
5555

@@ -61,16 +61,17 @@ constants {
6161
#C5 = TypeLiteralConstant(ffi::Double)
6262
#C6 = TypeLiteralConstant(ffi::Pointer<ffi::NativeType>)
6363
#C7 = <core::Type>[#C5, #C5, #C6]
64-
#C8 = core::pragma {name:#C4, options:#C7}
65-
#C9 = 24
66-
#C10 = 20
67-
#C11 = <core::int*>[#C9, #C10, #C9]
68-
#C12 = 0
69-
#C13 = <core::int*>[#C12, #C12, #C12]
70-
#C14 = 8
71-
#C15 = <core::int*>[#C14, #C14, #C14]
72-
#C16 = 16
73-
#C17 = <core::int*>[#C16, #C16, #C16]
64+
#C8 = ffi::_FfiStructLayout {fieldTypes:#C7}
65+
#C9 = core::pragma {name:#C4, options:#C8}
66+
#C10 = 24
67+
#C11 = 20
68+
#C12 = <core::int*>[#C10, #C11, #C10]
69+
#C13 = 0
70+
#C14 = <core::int*>[#C13, #C13, #C13]
71+
#C15 = 8
72+
#C16 = <core::int*>[#C15, #C15, #C15]
73+
#C17 = 16
74+
#C18 = <core::int*>[#C17, #C17, #C17]
7475
}
7576

7677

pkg/front_end/testcases/incremental_initialize_from_dill/ffi_01.yaml.world.1.expect

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ library from "org-dartlang-test:///lib.dart" as lib {
44
import "dart:ffi";
55

66
@#C3
7-
@#C8
7+
@#C9
88
class Coordinate extends dart.ffi::Struct {
99
@#C3
10-
static final field dart.core::int* #sizeOf = (#C11).{dart.core::List::[]}(dart.ffi::_abi());
10+
static final field dart.core::int* #sizeOf = (#C12).{dart.core::List::[]}(dart.ffi::_abi());
1111
@#C3
1212
constructor #fromTypedDataBase(dynamic #pointer) → dynamic
1313
: super dart.ffi::Struct::_fromPointer(#pointer)
@@ -27,17 +27,17 @@ library from "org-dartlang-test:///lib.dart" as lib {
2727
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
2828
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
2929
get x() → dart.core::double*
30-
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C13).{dart.core::List::[]}(dart.ffi::_abi()));
30+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C14).{dart.core::List::[]}(dart.ffi::_abi()));
3131
set x(dart.core::double* #v) → void
32-
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C13).{dart.core::List::[]}(dart.ffi::_abi()), #v);
32+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C14).{dart.core::List::[]}(dart.ffi::_abi()), #v);
3333
get y() → dart.core::double*
34-
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C15).{dart.core::List::[]}(dart.ffi::_abi()));
34+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C16).{dart.core::List::[]}(dart.ffi::_abi()));
3535
set y(dart.core::double* #v) → void
36-
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C15).{dart.core::List::[]}(dart.ffi::_abi()), #v);
36+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C16).{dart.core::List::[]}(dart.ffi::_abi()), #v);
3737
get next() → dart.ffi::Pointer<lib::Coordinate*>*
38-
return dart.ffi::_fromAddress<lib::Coordinate*>(dart.ffi::_loadIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C17).{dart.core::List::[]}(dart.ffi::_abi())));
38+
return dart.ffi::_fromAddress<lib::Coordinate*>(dart.ffi::_loadIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C18).{dart.core::List::[]}(dart.ffi::_abi())));
3939
set next(dart.ffi::Pointer<lib::Coordinate*>* #v) → void
40-
return dart.ffi::_storeIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C17).{dart.core::List::[]}(dart.ffi::_abi()), #v.{dart.ffi::Pointer::address});
40+
return dart.ffi::_storeIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C18).{dart.core::List::[]}(dart.ffi::_abi()), #v.{dart.ffi::Pointer::address});
4141
}
4242
}
4343
library from "org-dartlang-test:///main.dart" as main {
@@ -59,14 +59,15 @@ constants {
5959
#C5 = TypeLiteralConstant(dart.ffi::Double)
6060
#C6 = TypeLiteralConstant(dart.ffi::Pointer<dart.ffi::NativeType>)
6161
#C7 = <dart.core::Type>[#C5, #C5, #C6]
62-
#C8 = dart.core::pragma {name:#C4, options:#C7}
63-
#C9 = 24
64-
#C10 = 20
65-
#C11 = <dart.core::int*>[#C9, #C10, #C9]
66-
#C12 = 0
67-
#C13 = <dart.core::int*>[#C12, #C12, #C12]
68-
#C14 = 8
69-
#C15 = <dart.core::int*>[#C14, #C14, #C14]
70-
#C16 = 16
71-
#C17 = <dart.core::int*>[#C16, #C16, #C16]
62+
#C8 = dart.ffi::_FfiStructLayout {fieldTypes:#C7}
63+
#C9 = dart.core::pragma {name:#C4, options:#C8}
64+
#C10 = 24
65+
#C11 = 20
66+
#C12 = <dart.core::int*>[#C10, #C11, #C10]
67+
#C13 = 0
68+
#C14 = <dart.core::int*>[#C13, #C13, #C13]
69+
#C15 = 8
70+
#C16 = <dart.core::int*>[#C15, #C15, #C15]
71+
#C17 = 16
72+
#C18 = <dart.core::int*>[#C17, #C17, #C17]
7273
}

pkg/front_end/testcases/incremental_initialize_from_dill/ffi_01.yaml.world.2.expect

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ library from "org-dartlang-test:///lib.dart" as lib {
44
import "dart:ffi";
55

66
@#C3
7-
@#C8
7+
@#C9
88
class Coordinate extends dart.ffi::Struct {
99
@#C3
10-
static final field dart.core::int* #sizeOf = (#C11).{dart.core::List::[]}(dart.ffi::_abi());
10+
static final field dart.core::int* #sizeOf = (#C12).{dart.core::List::[]}(dart.ffi::_abi());
1111
@#C3
1212
constructor #fromTypedDataBase(dynamic #pointer) → dynamic
1313
: super dart.ffi::Struct::_fromPointer(#pointer)
@@ -27,17 +27,17 @@ library from "org-dartlang-test:///lib.dart" as lib {
2727
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
2828
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
2929
get x() → dart.core::double*
30-
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C13).{dart.core::List::[]}(dart.ffi::_abi()));
30+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C14).{dart.core::List::[]}(dart.ffi::_abi()));
3131
set x(dart.core::double* #v) → void
32-
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C13).{dart.core::List::[]}(dart.ffi::_abi()), #v);
32+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C14).{dart.core::List::[]}(dart.ffi::_abi()), #v);
3333
get y() → dart.core::double*
34-
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C15).{dart.core::List::[]}(dart.ffi::_abi()));
34+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C16).{dart.core::List::[]}(dart.ffi::_abi()));
3535
set y(dart.core::double* #v) → void
36-
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C15).{dart.core::List::[]}(dart.ffi::_abi()), #v);
36+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C16).{dart.core::List::[]}(dart.ffi::_abi()), #v);
3737
get next() → dart.ffi::Pointer<lib::Coordinate*>*
38-
return dart.ffi::_fromAddress<lib::Coordinate*>(dart.ffi::_loadIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C17).{dart.core::List::[]}(dart.ffi::_abi())));
38+
return dart.ffi::_fromAddress<lib::Coordinate*>(dart.ffi::_loadIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C18).{dart.core::List::[]}(dart.ffi::_abi())));
3939
set next(dart.ffi::Pointer<lib::Coordinate*>* #v) → void
40-
return dart.ffi::_storeIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C17).{dart.core::List::[]}(dart.ffi::_abi()), #v.{dart.ffi::Pointer::address});
40+
return dart.ffi::_storeIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C18).{dart.core::List::[]}(dart.ffi::_abi()), #v.{dart.ffi::Pointer::address});
4141
}
4242
}
4343
library from "org-dartlang-test:///main.dart" as main {
@@ -63,14 +63,15 @@ constants {
6363
#C5 = TypeLiteralConstant(dart.ffi::Double)
6464
#C6 = TypeLiteralConstant(dart.ffi::Pointer<dart.ffi::NativeType>)
6565
#C7 = <dart.core::Type>[#C5, #C5, #C6]
66-
#C8 = dart.core::pragma {name:#C4, options:#C7}
67-
#C9 = 24
68-
#C10 = 20
69-
#C11 = <dart.core::int*>[#C9, #C10, #C9]
70-
#C12 = 0
71-
#C13 = <dart.core::int*>[#C12, #C12, #C12]
72-
#C14 = 8
73-
#C15 = <dart.core::int*>[#C14, #C14, #C14]
74-
#C16 = 16
75-
#C17 = <dart.core::int*>[#C16, #C16, #C16]
66+
#C8 = dart.ffi::_FfiStructLayout {fieldTypes:#C7}
67+
#C9 = dart.core::pragma {name:#C4, options:#C8}
68+
#C10 = 24
69+
#C11 = 20
70+
#C12 = <dart.core::int*>[#C10, #C11, #C10]
71+
#C13 = 0
72+
#C14 = <dart.core::int*>[#C13, #C13, #C13]
73+
#C15 = 8
74+
#C16 = <dart.core::int*>[#C15, #C15, #C15]
75+
#C17 = 16
76+
#C18 = <dart.core::int*>[#C17, #C17, #C17]
7677
}

pkg/front_end/testcases/incremental_initialize_from_dill/ffi_02.yaml.world.1.expect

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ library from "org-dartlang-test:///lib.dart" as lib {
44
import "dart:ffi";
55

66
@#C3
7-
@#C8
7+
@#C9
88
class Coordinate extends dart.ffi::Struct {
99
@#C3
10-
static final field dart.core::int* #sizeOf = (#C11).{dart.core::List::[]}(dart.ffi::_abi());
10+
static final field dart.core::int* #sizeOf = (#C12).{dart.core::List::[]}(dart.ffi::_abi());
1111
@#C3
1212
constructor #fromTypedDataBase(dynamic #pointer) → dynamic
1313
: super dart.ffi::Struct::_fromPointer(#pointer)
@@ -27,17 +27,17 @@ library from "org-dartlang-test:///lib.dart" as lib {
2727
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
2828
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
2929
get x() → dart.core::double*
30-
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C13).{dart.core::List::[]}(dart.ffi::_abi()));
30+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C14).{dart.core::List::[]}(dart.ffi::_abi()));
3131
set x(dart.core::double* #v) → void
32-
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C13).{dart.core::List::[]}(dart.ffi::_abi()), #v);
32+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C14).{dart.core::List::[]}(dart.ffi::_abi()), #v);
3333
get y() → dart.core::double*
34-
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C15).{dart.core::List::[]}(dart.ffi::_abi()));
34+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C16).{dart.core::List::[]}(dart.ffi::_abi()));
3535
set y(dart.core::double* #v) → void
36-
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C15).{dart.core::List::[]}(dart.ffi::_abi()), #v);
36+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C16).{dart.core::List::[]}(dart.ffi::_abi()), #v);
3737
get next() → dart.ffi::Pointer<lib::Coordinate*>*
38-
return dart.ffi::_fromAddress<lib::Coordinate*>(dart.ffi::_loadIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C17).{dart.core::List::[]}(dart.ffi::_abi())));
38+
return dart.ffi::_fromAddress<lib::Coordinate*>(dart.ffi::_loadIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C18).{dart.core::List::[]}(dart.ffi::_abi())));
3939
set next(dart.ffi::Pointer<lib::Coordinate*>* #v) → void
40-
return dart.ffi::_storeIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C17).{dart.core::List::[]}(dart.ffi::_abi()), #v.{dart.ffi::Pointer::address});
40+
return dart.ffi::_storeIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C18).{dart.core::List::[]}(dart.ffi::_abi()), #v.{dart.ffi::Pointer::address});
4141
}
4242
}
4343
library from "org-dartlang-test:///main.dart" as main {
@@ -60,14 +60,15 @@ constants {
6060
#C5 = TypeLiteralConstant(dart.ffi::Double)
6161
#C6 = TypeLiteralConstant(dart.ffi::Pointer<dart.ffi::NativeType>)
6262
#C7 = <dart.core::Type>[#C5, #C5, #C6]
63-
#C8 = dart.core::pragma {name:#C4, options:#C7}
64-
#C9 = 24
65-
#C10 = 20
66-
#C11 = <dart.core::int*>[#C9, #C10, #C9]
67-
#C12 = 0
68-
#C13 = <dart.core::int*>[#C12, #C12, #C12]
69-
#C14 = 8
70-
#C15 = <dart.core::int*>[#C14, #C14, #C14]
71-
#C16 = 16
72-
#C17 = <dart.core::int*>[#C16, #C16, #C16]
63+
#C8 = dart.ffi::_FfiStructLayout {fieldTypes:#C7}
64+
#C9 = dart.core::pragma {name:#C4, options:#C8}
65+
#C10 = 24
66+
#C11 = 20
67+
#C12 = <dart.core::int*>[#C10, #C11, #C10]
68+
#C13 = 0
69+
#C14 = <dart.core::int*>[#C13, #C13, #C13]
70+
#C15 = 8
71+
#C16 = <dart.core::int*>[#C15, #C15, #C15]
72+
#C17 = 16
73+
#C18 = <dart.core::int*>[#C17, #C17, #C17]
7374
}

pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.1.expect

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ library from "org-dartlang-test:///lib.dart" as lib {
44
import "dart:ffi";
55

66
@#C3
7-
@#C8
7+
@#C9
88
class Coordinate extends dart.ffi::Struct {
99
@#C3
10-
static final field dart.core::int* #sizeOf = (#C11).{dart.core::List::[]}(dart.ffi::_abi());
10+
static final field dart.core::int* #sizeOf = (#C12).{dart.core::List::[]}(dart.ffi::_abi());
1111
@#C3
1212
constructor #fromTypedDataBase(dynamic #pointer) → dynamic
1313
: super dart.ffi::Struct::_fromPointer(#pointer)
@@ -27,17 +27,17 @@ library from "org-dartlang-test:///lib.dart" as lib {
2727
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
2828
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
2929
get x() → dart.core::double*
30-
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C13).{dart.core::List::[]}(dart.ffi::_abi()));
30+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C14).{dart.core::List::[]}(dart.ffi::_abi()));
3131
set x(dart.core::double* #v) → void
32-
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C13).{dart.core::List::[]}(dart.ffi::_abi()), #v);
32+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C14).{dart.core::List::[]}(dart.ffi::_abi()), #v);
3333
get y() → dart.core::double*
34-
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C15).{dart.core::List::[]}(dart.ffi::_abi()));
34+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C16).{dart.core::List::[]}(dart.ffi::_abi()));
3535
set y(dart.core::double* #v) → void
36-
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C15).{dart.core::List::[]}(dart.ffi::_abi()), #v);
36+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C16).{dart.core::List::[]}(dart.ffi::_abi()), #v);
3737
get next() → dart.ffi::Pointer<lib::Coordinate*>*
38-
return dart.ffi::_fromAddress<lib::Coordinate*>(dart.ffi::_loadIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C17).{dart.core::List::[]}(dart.ffi::_abi())));
38+
return dart.ffi::_fromAddress<lib::Coordinate*>(dart.ffi::_loadIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C18).{dart.core::List::[]}(dart.ffi::_abi())));
3939
set next(dart.ffi::Pointer<lib::Coordinate*>* #v) → void
40-
return dart.ffi::_storeIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C17).{dart.core::List::[]}(dart.ffi::_abi()), #v.{dart.ffi::Pointer::address});
40+
return dart.ffi::_storeIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C18).{dart.core::List::[]}(dart.ffi::_abi()), #v.{dart.ffi::Pointer::address});
4141
}
4242
}
4343
library from "org-dartlang-test:///main.dart" as main {
@@ -59,14 +59,15 @@ constants {
5959
#C5 = TypeLiteralConstant(dart.ffi::Double)
6060
#C6 = TypeLiteralConstant(dart.ffi::Pointer<dart.ffi::NativeType>)
6161
#C7 = <dart.core::Type>[#C5, #C5, #C6]
62-
#C8 = dart.core::pragma {name:#C4, options:#C7}
63-
#C9 = 24
64-
#C10 = 20
65-
#C11 = <dart.core::int*>[#C9, #C10, #C9]
66-
#C12 = 0
67-
#C13 = <dart.core::int*>[#C12, #C12, #C12]
68-
#C14 = 8
69-
#C15 = <dart.core::int*>[#C14, #C14, #C14]
70-
#C16 = 16
71-
#C17 = <dart.core::int*>[#C16, #C16, #C16]
62+
#C8 = dart.ffi::_FfiStructLayout {fieldTypes:#C7}
63+
#C9 = dart.core::pragma {name:#C4, options:#C8}
64+
#C10 = 24
65+
#C11 = 20
66+
#C12 = <dart.core::int*>[#C10, #C11, #C10]
67+
#C13 = 0
68+
#C14 = <dart.core::int*>[#C13, #C13, #C13]
69+
#C15 = 8
70+
#C16 = <dart.core::int*>[#C15, #C15, #C15]
71+
#C17 = 16
72+
#C18 = <dart.core::int*>[#C17, #C17, #C17]
7273
}

0 commit comments

Comments
 (0)