mirror of
https://github.com/dart-lang/sdk
synced 2024-10-03 02:42:05 +00:00
431ed5183f
Previously when building subtype class id ranges for a class in AOT, we looped over the entire class table, even though in most cases, the number of actual subclasses and implementors of the class is a small subset of all loaded classes. Instead, use the same hierarchy information in both JIT and AOT, only falling back to traversing the entire class table in cases where the hierarchy information is missing. Additional changes: * Do not generate unused type argument checks if the subtype class id range to check is empty. * Only generate a nullability check when checking that an instance type argument is a subtype of non-nullable Object in null safe mode. * Fix AbstractType::IsSubtypeOf so _Closure <: Function. Fixes https://github.com/dart-lang/sdk/issues/46936 TEST=vm/cc/HierarchyInfo Cq-Include-Trybots: luci.dart.try:vm-kernel-linux-release-x64-try,vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-nnbd-linux-release-x64-try,vm-kernel-nnbd-linux-release-x64-try,vm-kernel-tsan-linux-release-x64-try,vm-kernel-linux-product-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try Change-Id: Ic0310208d271ef04e778f070f420ae0abbdd47d3 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/210581 Commit-Queue: Tess Strickland <sstrickl@google.com> Reviewed-by: Alexander Markov <alexmarkov@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com> |
||
---|---|---|
.. | ||
address_sanitizer.h | ||
allocation.cc | ||
allocation.h | ||
assert.cc | ||
assert.h | ||
atomic.h | ||
BUILD.gn | ||
elf.h | ||
floating_point.h | ||
floating_point_win.cc | ||
floating_point_win.h | ||
globals.h | ||
growable_array.h | ||
hashmap.cc | ||
hashmap.h | ||
leak_sanitizer.h | ||
memory_sanitizer.h | ||
platform_sources.gni | ||
priority_queue.h | ||
safe_stack.h | ||
signal_blocker.h | ||
splay-tree-inl.h | ||
splay-tree.h | ||
syslog.h | ||
syslog_android.cc | ||
syslog_fuchsia.cc | ||
syslog_linux.cc | ||
syslog_macos.cc | ||
syslog_win.cc | ||
text_buffer.cc | ||
text_buffer.h | ||
thread_sanitizer.h | ||
unaligned.h | ||
undefined_behavior_sanitizer.h | ||
unicode.cc | ||
unicode.h | ||
utils.cc | ||
utils.h | ||
utils_android.cc | ||
utils_android.h | ||
utils_fuchsia.cc | ||
utils_fuchsia.h | ||
utils_linux.cc | ||
utils_linux.h | ||
utils_macos.cc | ||
utils_macos.h | ||
utils_win.cc | ||
utils_win.h |