88496ba1c3
Extend closure objects with variable number of elements to capture. This is needed to support capturing multiple independent contexts after capturing is computed in the front-end. The following fixed Closure fields are moved into variable-length elements: - delayed type arguments; - instantiator type arguments; - function type arguments; - context. Number of elements and presence/indices of various type arguments are encoded into the new length_and_flags field in the Closure. Most closure objects don't need any of the type arguments so this change will reduce average Closure object size. TEST=ci Issue: https://github.com/dart-lang/sdk/issues/61572 Issue: https://github.com/dart-lang/sdk/issues/61635 Change-Id: I7ca5cec0fd8725c432a01d51781fb14e803997dd Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/489482 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Ryan Macnak <rmacnak@google.com> Reviewed-by: Slava Egorov <vegorov@google.com> Reviewed-by: Tess Strickland <sstrickl@google.com>