Skip to content

Commit ae37ff0

Browse files
mralephcommit-bot@chromium.org
authored andcommitted
[vm] Compact serialization for canonical sets
This CL changes how canonical sets for some specific types are written into the root snapshot: instead of writing canonical set as a separate object we reorder objects within a canonical cluster in such a way that the order matches order of elements in the backing store of a canonical set and then we write canonical set layout out using differential encoding (essentially writing gaps between elements instead of writing absolute indices). This significantly reduces the overhead of having canonical sets in the snapshot while maintaining fast deserialisation: for example on build microbenchmark this brings regression in the snapshot size from 4% to .3%. On sizeopt benchmarks: flutter_gallery_app_so_gzip_size -1.5% flutter_gallery_app_so_size -4.7% flutter_gallery_total_heap_size -16.2% TEST=ci Change-Id: I2be7fd073668e9b52098e2acda9f11d128cfda95 Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-dwarf-linux-product-x64-try,vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-debug-x64-try,pkg-linux-release-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/185381 Commit-Queue: Vyacheslav Egorov <[email protected]> Reviewed-by: Siva Annamalai <[email protected]>
1 parent 01b0947 commit ae37ff0

File tree

6 files changed

+612
-112
lines changed

6 files changed

+612
-112
lines changed

0 commit comments

Comments
 (0)