Skip to content

Commit 4f28463

Browse files
committed
[vm/ffi] Remove derived pointers inside structs
Required for finalizers: #35770 Change-Id: Ic512a4efd81cbd38cd836a8e8ad80464d2a3481f Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,app-kernel-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-kernel-precomp-linux-debug-x64-try,vm-dartkb-linux-release-x64-abi-try,vm-kernel-precomp-android-release-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-precomp-android-release-arm_x64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,dart-sdk-linux-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try,front-end-linux-release-x64-try,vm-kernel-precomp-win-release-x64-try,vm-kernel-mac-debug-x64-try,analyzer-nnbd-linux-release-try,dart2js-nnbd-linux-x64-chrome-try,ddc-nnbd-linux-release-chrome-try,front-end-nnbd-linux-release-x64-try,vm-kernel-nnbd-linux-debug-x64-try,vm-kernel-nnbd-linux-release-x64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/135906 Reviewed-by: Martin Kustermann <[email protected]>
1 parent 953377a commit 4f28463

11 files changed

+152
-199
lines changed

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

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,18 @@ class Coordinate extends ffi::Struct {
1818
static factory allocate(core::double* x, core::double* y, ffi::Pointer<self::Coordinate*>* next) → self::Coordinate* {
1919
return let final self::Coordinate* #t1 = ffi::StructPointer|get#ref<self::Coordinate*>(all::allocate<self::Coordinate*>()) in let final void #t2 = #t1.{self::Coordinate::x} = x in let final void #t3 = #t1.{self::Coordinate::y} = y in let final void #t4 = #t1.{self::Coordinate::next} = next in #t1;
2020
}
21-
get #_ptr_x() → ffi::Pointer<ffi::Double*>*
22-
return this.{ffi::Struct::_addressOf}.{ffi::Pointer::cast}<ffi::Double*>();
2321
get x() → core::double*
24-
return ffi::_loadDouble(this.{self::Coordinate::#_ptr_x}, #C7);
22+
return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C8).{core::List::[]}(ffi::_abi()));
2523
set x(core::double* #v) → void
26-
return ffi::_storeDouble(this.{self::Coordinate::#_ptr_x}, #C7, #v);
27-
get #_ptr_y() → ffi::Pointer<ffi::Double*>*
28-
return this.{ffi::Struct::_addressOf}.{ffi::Pointer::_offsetBy}((#C9).{core::List::[]}(ffi::_abi())).{ffi::Pointer::cast}<ffi::Double*>();
24+
return ffi::_storeDouble(this.{ffi::Struct::_addressOf}, (#C8).{core::List::[]}(ffi::_abi()), #v);
2925
get y() → core::double*
30-
return ffi::_loadDouble(this.{self::Coordinate::#_ptr_y}, #C7);
26+
return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C10).{core::List::[]}(ffi::_abi()));
3127
set y(core::double* #v) → void
32-
return ffi::_storeDouble(this.{self::Coordinate::#_ptr_y}, #C7, #v);
33-
get #_ptr_next() → ffi::Pointer<ffi::Pointer<self::Coordinate*>*>*
34-
return this.{ffi::Struct::_addressOf}.{ffi::Pointer::_offsetBy}((#C11).{core::List::[]}(ffi::_abi())).{ffi::Pointer::cast}<ffi::Pointer<self::Coordinate*>*>();
28+
return ffi::_storeDouble(this.{ffi::Struct::_addressOf}, (#C10).{core::List::[]}(ffi::_abi()), #v);
3529
get next() → ffi::Pointer<self::Coordinate*>*
36-
return ffi::_loadPointer<ffi::Pointer<self::Coordinate*>*>(this.{self::Coordinate::#_ptr_next}, #C7);
30+
return ffi::_fromAddress<self::Coordinate*>(ffi::_loadIntPtr(this.{ffi::Struct::_addressOf}, (#C12).{core::List::[]}(ffi::_abi())));
3731
set next(ffi::Pointer<self::Coordinate*>* #v) → void
38-
return ffi::_storePointer<ffi::Pointer<self::Coordinate*>*>(this.{self::Coordinate::#_ptr_next}, #C7, #v);
32+
return ffi::_storeIntPtr(this.{ffi::Struct::_addressOf}, (#C12).{core::List::[]}(ffi::_abi()), #v.{=ffi::Pointer::address});
3933
}
4034
static method main() → dynamic {}
4135

@@ -47,8 +41,9 @@ constants {
4741
#C5 = 20
4842
#C6 = <core::int*>[#C4, #C5, #C4]
4943
#C7 = 0
50-
#C8 = 8
51-
#C9 = <core::int*>[#C8, #C8, #C8]
52-
#C10 = 16
53-
#C11 = <core::int*>[#C10, #C10, #C10]
44+
#C8 = <core::int*>[#C7, #C7, #C7]
45+
#C9 = 8
46+
#C10 = <core::int*>[#C9, #C9, #C9]
47+
#C11 = 16
48+
#C12 = <core::int*>[#C11, #C11, #C11]
5449
}

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

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,18 @@ class Coordinate extends ffi::Struct {
1818
static factory allocate(core::double* x, core::double* y, ffi::Pointer<self::Coordinate*>* next) → self::Coordinate* {
1919
return let final self::Coordinate* #t1 = ffi::StructPointer|get#ref<self::Coordinate*>(all::allocate<self::Coordinate*>()) in let final void #t2 = #t1.{self::Coordinate::x} = x in let final void #t3 = #t1.{self::Coordinate::y} = y in let final void #t4 = #t1.{self::Coordinate::next} = next in #t1;
2020
}
21-
get #_ptr_x() → ffi::Pointer<ffi::Double*>*
22-
return this.{ffi::Struct::_addressOf}.{ffi::Pointer::cast}<ffi::Double*>();
2321
get x() → core::double*
24-
return ffi::_loadDouble(this.{self::Coordinate::#_ptr_x}, #C7);
22+
return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C8).{core::List::[]}(ffi::_abi()));
2523
set x(core::double* #v) → void
26-
return ffi::_storeDouble(this.{self::Coordinate::#_ptr_x}, #C7, #v);
27-
get #_ptr_y() → ffi::Pointer<ffi::Double*>*
28-
return this.{ffi::Struct::_addressOf}.{ffi::Pointer::_offsetBy}((#C9).{core::List::[]}(ffi::_abi())).{ffi::Pointer::cast}<ffi::Double*>();
24+
return ffi::_storeDouble(this.{ffi::Struct::_addressOf}, (#C8).{core::List::[]}(ffi::_abi()), #v);
2925
get y() → core::double*
30-
return ffi::_loadDouble(this.{self::Coordinate::#_ptr_y}, #C7);
26+
return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C10).{core::List::[]}(ffi::_abi()));
3127
set y(core::double* #v) → void
32-
return ffi::_storeDouble(this.{self::Coordinate::#_ptr_y}, #C7, #v);
33-
get #_ptr_next() → ffi::Pointer<ffi::Pointer<self::Coordinate*>*>*
34-
return this.{ffi::Struct::_addressOf}.{ffi::Pointer::_offsetBy}((#C11).{core::List::[]}(ffi::_abi())).{ffi::Pointer::cast}<ffi::Pointer<self::Coordinate*>*>();
28+
return ffi::_storeDouble(this.{ffi::Struct::_addressOf}, (#C10).{core::List::[]}(ffi::_abi()), #v);
3529
get next() → ffi::Pointer<self::Coordinate*>*
36-
return ffi::_loadPointer<ffi::Pointer<self::Coordinate*>*>(this.{self::Coordinate::#_ptr_next}, #C7);
30+
return ffi::_fromAddress<self::Coordinate*>(ffi::_loadIntPtr(this.{ffi::Struct::_addressOf}, (#C12).{core::List::[]}(ffi::_abi())));
3731
set next(ffi::Pointer<self::Coordinate*>* #v) → void
38-
return ffi::_storePointer<ffi::Pointer<self::Coordinate*>*>(this.{self::Coordinate::#_ptr_next}, #C7, #v);
32+
return ffi::_storeIntPtr(this.{ffi::Struct::_addressOf}, (#C12).{core::List::[]}(ffi::_abi()), #v.{=ffi::Pointer::address});
3933
}
4034
static method main() → dynamic {}
4135

@@ -47,8 +41,9 @@ constants {
4741
#C5 = 20
4842
#C6 = <core::int*>[#C4, #C5, #C4]
4943
#C7 = 0
50-
#C8 = 8
51-
#C9 = <core::int*>[#C8, #C8, #C8]
52-
#C10 = 16
53-
#C11 = <core::int*>[#C10, #C10, #C10]
44+
#C8 = <core::int*>[#C7, #C7, #C7]
45+
#C9 = 8
46+
#C10 = <core::int*>[#C9, #C9, #C9]
47+
#C11 = 16
48+
#C12 = <core::int*>[#C11, #C11, #C11]
5449
}

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

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,18 @@ class Coordinate extends ffi::Struct {
1818
static factory allocate(core::double* x, core::double* y, ffi::Pointer<self::Coordinate*>* next) → self::Coordinate* {
1919
return let final self::Coordinate* #t1 = ffi::StructPointer|get#ref<self::Coordinate*>(all::allocate<self::Coordinate*>()) in let final void #t2 = #t1.{self::Coordinate::x} = x in let final void #t3 = #t1.{self::Coordinate::y} = y in let final void #t4 = #t1.{self::Coordinate::next} = next in #t1;
2020
}
21-
get #_ptr_x() → ffi::Pointer<ffi::Double*>*
22-
return this.{ffi::Struct::_addressOf}.{ffi::Pointer::cast}<ffi::Double*>();
2321
get x() → core::double*
24-
return ffi::_loadDouble(this.{self::Coordinate::#_ptr_x}, #C7);
22+
return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C8).{core::List::[]}(ffi::_abi()));
2523
set x(core::double* #v) → void
26-
return ffi::_storeDouble(this.{self::Coordinate::#_ptr_x}, #C7, #v);
27-
get #_ptr_y() → ffi::Pointer<ffi::Double*>*
28-
return this.{ffi::Struct::_addressOf}.{ffi::Pointer::_offsetBy}((#C9).{core::List::[]}(ffi::_abi())).{ffi::Pointer::cast}<ffi::Double*>();
24+
return ffi::_storeDouble(this.{ffi::Struct::_addressOf}, (#C8).{core::List::[]}(ffi::_abi()), #v);
2925
get y() → core::double*
30-
return ffi::_loadDouble(this.{self::Coordinate::#_ptr_y}, #C7);
26+
return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C10).{core::List::[]}(ffi::_abi()));
3127
set y(core::double* #v) → void
32-
return ffi::_storeDouble(this.{self::Coordinate::#_ptr_y}, #C7, #v);
33-
get #_ptr_next() → ffi::Pointer<ffi::Pointer<self::Coordinate*>*>*
34-
return this.{ffi::Struct::_addressOf}.{ffi::Pointer::_offsetBy}((#C11).{core::List::[]}(ffi::_abi())).{ffi::Pointer::cast}<ffi::Pointer<self::Coordinate*>*>();
28+
return ffi::_storeDouble(this.{ffi::Struct::_addressOf}, (#C10).{core::List::[]}(ffi::_abi()), #v);
3529
get next() → ffi::Pointer<self::Coordinate*>*
36-
return ffi::_loadPointer<ffi::Pointer<self::Coordinate*>*>(this.{self::Coordinate::#_ptr_next}, #C7);
30+
return ffi::_fromAddress<self::Coordinate*>(ffi::_loadIntPtr(this.{ffi::Struct::_addressOf}, (#C12).{core::List::[]}(ffi::_abi())));
3731
set next(ffi::Pointer<self::Coordinate*>* #v) → void
38-
return ffi::_storePointer<ffi::Pointer<self::Coordinate*>*>(this.{self::Coordinate::#_ptr_next}, #C7, #v);
32+
return ffi::_storeIntPtr(this.{ffi::Struct::_addressOf}, (#C12).{core::List::[]}(ffi::_abi()), #v.{=ffi::Pointer::address});
3933
}
4034
static method main() → dynamic {}
4135

@@ -47,8 +41,9 @@ constants {
4741
#C5 = 20
4842
#C6 = <core::int*>[#C4, #C5, #C4]
4943
#C7 = 0
50-
#C8 = 8
51-
#C9 = <core::int*>[#C8, #C8, #C8]
52-
#C10 = 16
53-
#C11 = <core::int*>[#C10, #C10, #C10]
44+
#C8 = <core::int*>[#C7, #C7, #C7]
45+
#C9 = 8
46+
#C10 = <core::int*>[#C9, #C9, #C9]
47+
#C11 = 16
48+
#C12 = <core::int*>[#C11, #C11, #C11]
5449
}

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

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,18 @@ library from "org-dartlang-test:///lib.dart" as lib {
1414
static factory allocate(dart.core::double* x, dart.core::double* y, dart.ffi::Pointer<lib::Coordinate*>* next) → lib::Coordinate* {
1515
return null;
1616
}
17-
get #_ptr_x() → dart.ffi::Pointer<dart.ffi::Double*>*
18-
return this.{dart.ffi::Struct::_addressOf}.{dart.ffi::Pointer::cast}<dart.ffi::Double*>();
1917
get x() → dart.core::double*
20-
return dart.ffi::_loadDouble(this.{lib::Coordinate::#_ptr_x}, #C7);
18+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()));
2119
set x(dart.core::double* #v) → void
22-
return dart.ffi::_storeDouble(this.{lib::Coordinate::#_ptr_x}, #C7, #v);
23-
get #_ptr_y() → dart.ffi::Pointer<dart.ffi::Double*>*
24-
return this.{dart.ffi::Struct::_addressOf}.{dart.ffi::Pointer::_offsetBy}((#C9).{dart.core::List::[]}(dart.ffi::_abi())).{dart.ffi::Pointer::cast}<dart.ffi::Double*>();
20+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()), #v);
2521
get y() → dart.core::double*
26-
return dart.ffi::_loadDouble(this.{lib::Coordinate::#_ptr_y}, #C7);
22+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C10).{dart.core::List::[]}(dart.ffi::_abi()));
2723
set y(dart.core::double* #v) → void
28-
return dart.ffi::_storeDouble(this.{lib::Coordinate::#_ptr_y}, #C7, #v);
29-
get #_ptr_next() → dart.ffi::Pointer<dart.ffi::Pointer<lib::Coordinate*>*>*
30-
return this.{dart.ffi::Struct::_addressOf}.{dart.ffi::Pointer::_offsetBy}((#C11).{dart.core::List::[]}(dart.ffi::_abi())).{dart.ffi::Pointer::cast}<dart.ffi::Pointer<lib::Coordinate*>*>();
24+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C10).{dart.core::List::[]}(dart.ffi::_abi()), #v);
3125
get next() → dart.ffi::Pointer<lib::Coordinate*>*
32-
return dart.ffi::_loadPointer<dart.ffi::Pointer<lib::Coordinate*>*>(this.{lib::Coordinate::#_ptr_next}, #C7);
26+
return dart.ffi::_fromAddress<lib::Coordinate*>(dart.ffi::_loadIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C12).{dart.core::List::[]}(dart.ffi::_abi())));
3327
set next(dart.ffi::Pointer<lib::Coordinate*>* #v) → void
34-
return dart.ffi::_storePointer<dart.ffi::Pointer<lib::Coordinate*>*>(this.{lib::Coordinate::#_ptr_next}, #C7, #v);
28+
return dart.ffi::_storeIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C12).{dart.core::List::[]}(dart.ffi::_abi()), #v.{=dart.ffi::Pointer::address});
3529
}
3630
}
3731
library from "org-dartlang-test:///main.dart" as main {
@@ -53,8 +47,9 @@ constants {
5347
#C5 = 20
5448
#C6 = <dart.core::int*>[#C4, #C5, #C4]
5549
#C7 = 0
56-
#C8 = 8
57-
#C9 = <dart.core::int*>[#C8, #C8, #C8]
58-
#C10 = 16
59-
#C11 = <dart.core::int*>[#C10, #C10, #C10]
50+
#C8 = <dart.core::int*>[#C7, #C7, #C7]
51+
#C9 = 8
52+
#C10 = <dart.core::int*>[#C9, #C9, #C9]
53+
#C11 = 16
54+
#C12 = <dart.core::int*>[#C11, #C11, #C11]
6055
}

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

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,18 @@ library from "org-dartlang-test:///lib.dart" as lib {
1414
static factory allocate(dart.core::double* x, dart.core::double* y, dart.ffi::Pointer<lib::Coordinate*>* next) → lib::Coordinate* {
1515
return null;
1616
}
17-
get #_ptr_x() → dart.ffi::Pointer<dart.ffi::Double*>*
18-
return this.{dart.ffi::Struct::_addressOf}.{dart.ffi::Pointer::cast}<dart.ffi::Double*>();
1917
get x() → dart.core::double*
20-
return dart.ffi::_loadDouble(this.{lib::Coordinate::#_ptr_x}, #C7);
18+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()));
2119
set x(dart.core::double* #v) → void
22-
return dart.ffi::_storeDouble(this.{lib::Coordinate::#_ptr_x}, #C7, #v);
23-
get #_ptr_y() → dart.ffi::Pointer<dart.ffi::Double*>*
24-
return this.{dart.ffi::Struct::_addressOf}.{dart.ffi::Pointer::_offsetBy}((#C9).{dart.core::List::[]}(dart.ffi::_abi())).{dart.ffi::Pointer::cast}<dart.ffi::Double*>();
20+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()), #v);
2521
get y() → dart.core::double*
26-
return dart.ffi::_loadDouble(this.{lib::Coordinate::#_ptr_y}, #C7);
22+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C10).{dart.core::List::[]}(dart.ffi::_abi()));
2723
set y(dart.core::double* #v) → void
28-
return dart.ffi::_storeDouble(this.{lib::Coordinate::#_ptr_y}, #C7, #v);
29-
get #_ptr_next() → dart.ffi::Pointer<dart.ffi::Pointer<lib::Coordinate*>*>*
30-
return this.{dart.ffi::Struct::_addressOf}.{dart.ffi::Pointer::_offsetBy}((#C11).{dart.core::List::[]}(dart.ffi::_abi())).{dart.ffi::Pointer::cast}<dart.ffi::Pointer<lib::Coordinate*>*>();
24+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C10).{dart.core::List::[]}(dart.ffi::_abi()), #v);
3125
get next() → dart.ffi::Pointer<lib::Coordinate*>*
32-
return dart.ffi::_loadPointer<dart.ffi::Pointer<lib::Coordinate*>*>(this.{lib::Coordinate::#_ptr_next}, #C7);
26+
return dart.ffi::_fromAddress<lib::Coordinate*>(dart.ffi::_loadIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C12).{dart.core::List::[]}(dart.ffi::_abi())));
3327
set next(dart.ffi::Pointer<lib::Coordinate*>* #v) → void
34-
return dart.ffi::_storePointer<dart.ffi::Pointer<lib::Coordinate*>*>(this.{lib::Coordinate::#_ptr_next}, #C7, #v);
28+
return dart.ffi::_storeIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C12).{dart.core::List::[]}(dart.ffi::_abi()), #v.{=dart.ffi::Pointer::address});
3529
}
3630
}
3731
library from "org-dartlang-test:///main.dart" as main {
@@ -57,8 +51,9 @@ constants {
5751
#C5 = 20
5852
#C6 = <dart.core::int*>[#C4, #C5, #C4]
5953
#C7 = 0
60-
#C8 = 8
61-
#C9 = <dart.core::int*>[#C8, #C8, #C8]
62-
#C10 = 16
63-
#C11 = <dart.core::int*>[#C10, #C10, #C10]
54+
#C8 = <dart.core::int*>[#C7, #C7, #C7]
55+
#C9 = 8
56+
#C10 = <dart.core::int*>[#C9, #C9, #C9]
57+
#C11 = 16
58+
#C12 = <dart.core::int*>[#C11, #C11, #C11]
6459
}

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

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,18 @@ library from "org-dartlang-test:///lib.dart" as lib {
1414
static factory allocate(dart.core::double* x, dart.core::double* y, dart.ffi::Pointer<lib::Coordinate*>* next) → lib::Coordinate* {
1515
return null;
1616
}
17-
get #_ptr_x() → dart.ffi::Pointer<dart.ffi::Double*>*
18-
return this.{dart.ffi::Struct::_addressOf}.{dart.ffi::Pointer::cast}<dart.ffi::Double*>();
1917
get x() → dart.core::double*
20-
return dart.ffi::_loadDouble(this.{lib::Coordinate::#_ptr_x}, #C7);
18+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()));
2119
set x(dart.core::double* #v) → void
22-
return dart.ffi::_storeDouble(this.{lib::Coordinate::#_ptr_x}, #C7, #v);
23-
get #_ptr_y() → dart.ffi::Pointer<dart.ffi::Double*>*
24-
return this.{dart.ffi::Struct::_addressOf}.{dart.ffi::Pointer::_offsetBy}((#C9).{dart.core::List::[]}(dart.ffi::_abi())).{dart.ffi::Pointer::cast}<dart.ffi::Double*>();
20+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()), #v);
2521
get y() → dart.core::double*
26-
return dart.ffi::_loadDouble(this.{lib::Coordinate::#_ptr_y}, #C7);
22+
return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C10).{dart.core::List::[]}(dart.ffi::_abi()));
2723
set y(dart.core::double* #v) → void
28-
return dart.ffi::_storeDouble(this.{lib::Coordinate::#_ptr_y}, #C7, #v);
29-
get #_ptr_next() → dart.ffi::Pointer<dart.ffi::Pointer<lib::Coordinate*>*>*
30-
return this.{dart.ffi::Struct::_addressOf}.{dart.ffi::Pointer::_offsetBy}((#C11).{dart.core::List::[]}(dart.ffi::_abi())).{dart.ffi::Pointer::cast}<dart.ffi::Pointer<lib::Coordinate*>*>();
24+
return dart.ffi::_storeDouble(this.{dart.ffi::Struct::_addressOf}, (#C10).{dart.core::List::[]}(dart.ffi::_abi()), #v);
3125
get next() → dart.ffi::Pointer<lib::Coordinate*>*
32-
return dart.ffi::_loadPointer<dart.ffi::Pointer<lib::Coordinate*>*>(this.{lib::Coordinate::#_ptr_next}, #C7);
26+
return dart.ffi::_fromAddress<lib::Coordinate*>(dart.ffi::_loadIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C12).{dart.core::List::[]}(dart.ffi::_abi())));
3327
set next(dart.ffi::Pointer<lib::Coordinate*>* #v) → void
34-
return dart.ffi::_storePointer<dart.ffi::Pointer<lib::Coordinate*>*>(this.{lib::Coordinate::#_ptr_next}, #C7, #v);
28+
return dart.ffi::_storeIntPtr(this.{dart.ffi::Struct::_addressOf}, (#C12).{dart.core::List::[]}(dart.ffi::_abi()), #v.{=dart.ffi::Pointer::address});
3529
}
3630
}
3731
library from "org-dartlang-test:///main.dart" as main {
@@ -54,8 +48,9 @@ constants {
5448
#C5 = 20
5549
#C6 = <dart.core::int*>[#C4, #C5, #C4]
5650
#C7 = 0
57-
#C8 = 8
58-
#C9 = <dart.core::int*>[#C8, #C8, #C8]
59-
#C10 = 16
60-
#C11 = <dart.core::int*>[#C10, #C10, #C10]
51+
#C8 = <dart.core::int*>[#C7, #C7, #C7]
52+
#C9 = 8
53+
#C10 = <dart.core::int*>[#C9, #C9, #C9]
54+
#C11 = 16
55+
#C12 = <dart.core::int*>[#C11, #C11, #C11]
6156
}

0 commit comments

Comments
 (0)