mirror of
https://github.com/dart-lang/sdk
synced 2024-10-06 14:29:50 +00:00
3669086a40
In AOT we can have unboxed fields that will not be visited by GC visitors and as such are also not reported as <obj>.references when producing heap snapshots. Though the heapsnapshot's <class>.fields will contain entries for unboxed fields, which causes the fields index calculation to be incorrect. This can cause various confusing things, e.g. incorrectly caluclated retaining paths, since the <class>.fields.index doesn't match the index in <obj>.references. To fix this this CL will change the visiting code to emit dummy references for unboxed fields. The written test uncovered a few other issues: - report type_arguments and native_fields in <class>.fields => the visitors already visit those fields - fix `Class::next_{host,target}_field_offset` for classes with native fields => this will also shrink size of `NativeWrapperClass` subclasses - ensure classes with vm-defined layout are finalized => we assume objects should only exist in heap if their class is finalized - fix `FfiNativeFunction` type_argument offset - fixes for object fields list => add missing entries, fix existing entries Fixes https://github.com/dart-lang/sdk/issues/49711 TEST=vm/dart{,_2}/heap_snapshot_regress_49711_test Change-Id: I8e25680b2c0c8c49caafbb8da57b0b6419e89c4f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/255814 Reviewed-by: Ryan Macnak <rmacnak@google.com> Commit-Queue: Martin Kustermann <kustermann@google.com> |
||
---|---|---|
.. | ||
bin | ||
docs | ||
include | ||
lib | ||
observatory | ||
observatory_2 | ||
platform | ||
tests | ||
third_party | ||
tools | ||
vm | ||
.clang-tidy | ||
.gitignore | ||
BUILD.gn | ||
codereview.settings | ||
configs.gni | ||
CPPLINT.cfg | ||
OWNERS | ||
PRESUBMIT.py | ||
runtime_args.gni |