Files
sdk/runtime/vm
Daco Harkes db762108fb [vm/ffi] Fix Pointer deferred materialization on deopt
`Pointer`s were not handled in deferred materialization of objects
on deoptimizations. This lead to the address field being written as a
tagged value, causing the actual address to be smitagged.
Subsequent uses of those addresses would lead to segfaults.

This CL handles the `Pointer`s manually to deal with the untagged
address.

`--trace-deoptimization-verbose` before this CL:

```
Deoptimizing [...]
    _typedDataBase@8050071 <- Pointer: address=0x7ffff7488081
    null Field @ offset(8) <- 140736616678128
    null Field @ offset(16) <- TypeArguments: (H39d2e3b4) [Type: Never]
```

after this CL:

```
Deoptimizing [...]
    _typedDataBase@8050071 <- Pointer: address=0x7fa2c0a88081
    pointer@data <- 0x7fa29c16c0e0
    pointer@type_args <- TypeArguments: (H39d2e3b4) [Type: Never]
```

TEST=runtime/tests/vm/dart/regress_54871_test.dart
TEST=tests/ffi/structs_test.dart with --hot-reload-rollback-test-mode
     and --optimization-counter-threshold=50

Closes: https://github.com/dart-lang/sdk/issues/54871
Change-Id: I13b6404c8b098643b8ac0f59ee8e9bc635f33b8d
Cq-Include-Trybots: luci.dart.try:vm-reload-rollback-linux-debug-x64-try,vm-reload-rollback-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/352300
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2024-02-14 14:15:16 +00:00
..
2023-09-13 20:26:30 +00:00
2023-03-06 22:06:59 +00:00
2023-03-06 22:06:59 +00:00
2023-06-28 01:00:18 +00:00
2023-06-28 01:00:18 +00:00
2023-06-28 01:00:18 +00:00
2023-06-28 01:00:18 +00:00
2023-06-28 01:00:18 +00:00
2023-06-28 01:00:18 +00:00
2023-06-23 20:35:00 +00:00
2023-09-12 16:22:19 +00:00
2023-09-12 16:22:19 +00:00
2023-06-23 20:35:00 +00:00
2023-06-23 20:35:00 +00:00
2023-06-23 20:35:00 +00:00
2022-09-12 12:33:57 +00:00
2022-09-12 12:33:57 +00:00
2023-11-21 20:39:29 +00:00
2023-08-17 17:38:48 +00:00
2023-10-20 19:45:49 +00:00
2023-06-23 20:35:00 +00:00
2023-12-18 21:39:09 +00:00
2023-12-18 21:39:09 +00:00
2024-01-26 18:58:54 +00:00
2022-12-29 10:18:02 +00:00
2023-06-28 01:00:18 +00:00
2023-08-21 16:46:46 +00:00
2023-01-06 07:48:22 +00:00
2022-07-29 18:11:01 +00:00
2023-04-12 22:18:54 +00:00
2023-03-06 22:06:59 +00:00
2023-01-09 15:48:57 +00:00
2024-01-26 18:58:54 +00:00
2024-01-26 18:58:54 +00:00
2023-12-18 17:01:18 +00:00
2022-09-10 15:12:35 +00:00
2023-04-21 22:41:28 +00:00