Files
sdk/runtime/vm
Alexander Markov 97bb624cfe [vm] Rebuild type testing stubs if their fast path starts failing
When type testing stub is generated it captures whatever subclasses are
present at this moment. As program continues running, new classes could be
loaded and finalized. This is especially true in bytecode mode with
its more lazy class loading. So type testing stubs could get outdated and
will fall back to slow path. This could cause performance regressions as
slow path is (1) slower :) and (2) it populates and uses SubtypeTestCache,
which has a limited capcity (controlled by max_subtype_cache_entries flag).
Once SubtypeTestCache overflows type checks are not longer cached which
makes type checks at particular location significantly slower.

The solution is to rebuild specialized type testing stub in TypeCheck
runtime entry after fast path failed but check succeeded.

Change-Id: Ied166e19be2870acef7a066b83bb73931bd1073d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119184
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-10-02 21:09:33 +00:00
..
2019-10-02 17:34:10 +00:00
2019-08-08 00:47:55 +00:00
2019-09-17 16:38:19 +00:00
2018-11-01 16:37:22 +00:00
2018-08-20 22:47:31 +00:00
2019-01-25 16:45:13 +00:00
2019-06-03 14:36:04 +00:00
2019-06-03 14:36:04 +00:00
2019-05-06 21:01:39 +00:00
2018-12-10 23:15:27 +00:00
2018-12-10 23:15:27 +00:00
2019-09-25 21:41:55 +00:00
2019-07-10 22:20:10 +00:00
2019-05-23 19:10:46 +00:00
2019-09-05 17:00:33 +00:00