cf8a6063f8
When the type to test against is instantiated and has no type arguments there is a high probability that we receive instances of that class or subclasses at runtime. This CL therefore extends the fast-path of AssertAssignable/InstanceOf by checking whether the instance class id is within the cid ranges that directly/indirectly implement/extend the type to test against. Currently we have an almost depth-first preorder numbering of class ids in AOT, but there are exceptions. So each class can have a number of cid-ranges as subclasses / classes which implement it's interface. This seems to improve performance of dart-aot-v2 * flutter stock build by 15+% * DeltaBlueClosures by 10+% and reduces code size on * flutter gallery by -3% Issue https://github.com/dart-lang/sdk/issues/31798 Change-Id: I07dd91589cc3fcd8c5952bdba339e2e2a459e08e Reviewed-on: https://dart-review.googlesource.com/35620 Commit-Queue: Martin Kustermann <kustermann@google.com> Reviewed-by: Régis Crelier <regis@google.com> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>