e969fd995a
Arguments descriptors for invocation dispatchers are loaded as constants. However, we only optimize type argument length field loads from constant argument descriptors, so the prologue code is less efficient than it could be in these cases. Add the appropriate cases for pulling out the count, positional count, and size as constants from constant argument descriptors in LoadFieldInstr::TryEvaluateLoad, which is enough to let the optimizing compiler tune this code appropriately. Also remove the code for handling dynamic closure call dispatchers specially within the prologue builder and instead explicitly generate any checks that use the runtime closure value in the dynamic closure call fragment builders after the prologue. Bug: https://github.com/dart-lang/sdk/issues/40813 Change-Id: Ie9bd4c01c3b604f282e9b2a72327b7fc81dc4eaf Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/159905 Commit-Queue: Tess Strickland <sstrickl@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com> Reviewed-by: Alexander Markov <alexmarkov@google.com>