Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Reland "[vm] More efficient 'await' of not Future and completed _Future"
This is a reland of commit 6b3d175 Fixes b/235734143 TEST=runtime/tests/vm/dart/await_in_custom_zone_test.dart Original change's description: > [vm] More efficient 'await' of not Future and completed _Future > > When awaiting a value which is not a Future or a completed > built-in _Future, 'await' implementation can bypass heavyweight > _Future/_FutureListener machinery and schedule micro-tasks directly. > > Benchmarks: > JIT, x64: > AsyncLiveVars.* +46-54% (bigger is better) > Calls.AwaitAsyncCall -46% (less is better) > Calls.AwaitAsyncCallInstanceTargetPolymorphic -46% > Calls.AwaitAsyncCallClosureTargetPolymorphic -45% > Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -45% > Calls.AwaitFutureOrCall -60% > Calls.AwaitFutureOrCallInstanceTargetPolymorphic -60% > Calls.AwaitFutureOrCallClosureTargetPolymorphic -59% > > JIT, ia32: > AsyncLiveVars.* +43-52% (bigger is better) > Calls.AwaitAsyncCall -42% (less is better) > Calls.AwaitAsyncCallInstanceTargetPolymorphic -42% > Calls.AwaitAsyncCallClosureTargetPolymorphic -41% > Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -39% > Calls.AwaitFutureOrCall -55% > Calls.AwaitFutureOrCallInstanceTargetPolymorphic -54% > Calls.AwaitFutureOrCallClosureTargetPolymorphic -53% > > JIT, arm: > AsyncLiveVars.* +64-71% (bigger is better) > Calls.AwaitAsyncCallInstanceTargetPolymorphic -51% (less is better) > Calls.AwaitAsyncCallClosureTargetPolymorphic -47% > Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -48% > Calls.AwaitFutureOrCall -64% > Calls.AwaitFutureOrCallInstanceTargetPolymorphic -64% > Calls.AwaitFutureOrCallClosureTargetPolymorphic -59% > > JIT, arm64: > AsyncLiveVars.* +65-78% (bigger is better) > Calls.AwaitAsyncCall -51% (less is better) > Calls.AwaitAsyncCallInstanceTargetPolymorphic -51% > Calls.AwaitAsyncCallClosureTargetPolymorphic -50% > Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -49% > Calls.AwaitFutureOrCall -69% > Calls.AwaitFutureOrCallInstanceTargetPolymorphic -68% > Calls.AwaitFutureOrCallClosureTargetPolymorphic -67% > > AOT, x64: > AsyncLiveVars.* +55-61% (bigger is better) > Calls.AwaitAsyncCall -47% (less is better) > Calls.AwaitAsyncCallInstanceTargetPolymorphic -46% > Calls.AwaitAsyncCallClosureTargetPolymorphic -47% > Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -46% > Calls.AwaitFutureOrCall -59% > Calls.AwaitFutureOrCallInstanceTargetPolymorphic -59% > Calls.AwaitFutureOrCallClosureTargetPolymorphic -58% > > AOT, arm: > AsyncLiveVars.* 54-66% (bigger is better) > Calls.AwaitAsyncCall -46-51% (less is better) > Calls.AwaitAsyncCallInstanceTargetPolymorphic -46-50% > Calls.AwaitAsyncCallClosureTargetPolymorphic -46-52% > Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -45-50% > Calls.AwaitFutureOrCall -63-68% > Calls.AwaitFutureOrCallInstanceTargetPolymorphic -63-66% > Calls.AwaitFutureOrCallClosureTargetPolymorphic -63-67% > > AOT, arm64: > AsyncLiveVars.* +53-66% (bigger is better) > Calls.AwaitAsyncCall -50-51% (less is better) > Calls.AwaitAsyncCallInstanceTargetPolymorphic -50% > Calls.AwaitAsyncCallClosureTargetPolymorphic -50-51% > Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -49-50% > Calls.AwaitFutureOrCall -66-68% > Calls.AwaitFutureOrCallInstanceTargetPolymorphic -66-68% > Calls.AwaitFutureOrCallClosureTargetPolymorphic -63-67% > > TEST=ci > Issue: #48378 > > Change-Id: I65e3702fcd816ee3fee876ff442b9887c035b1ec > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/243102 > Reviewed-by: Lasse Nielsen <lrn@google.com> > Commit-Queue: Alexander Markov <alexmarkov@google.com> Change-Id: I245984ace1c768fdcba58dfdd6aa46e52126be4e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/248442 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Lasse Nielsen <lrn@google.com> Reviewed-by: Slava Egorov <vegorov@google.com>
- Loading branch information