mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 23:49:47 +00:00
0cd55a18c1
Adds a `CachableIdempotentCallInstr` that can be invoked via `@pragma('vm:cachable-idempotent')` if the call-sites is force optimized. The object pool is not visited by the scavenger. So, we store the results as unboxed integers. Consequently, only dart functions that return integers can be cached. Cachable idempotent calls should never be inlined. After the first call the function not be called again. The call itself is on a slow path to avoid register spilling on the fast path. TEST=vm/cc/IRTest_CachableIdempotentCall TEST=runtime/tests/vm/dart/cachable_idempotent_test.dart Bug: https://github.com/dart-lang/sdk/issues/51618 Change-Id: I612e896f27add76f57796c060157e14cc687a0fd Cq-Include-Trybots: luci.dart.try:vm-aot-android-release-arm64c-try,vm-aot-android-release-arm_x64-try,vm-aot-asan-linux-release-x64-try,vm-aot-linux-debug-simarm_x64-try,vm-aot-linux-debug-simriscv64-try,vm-aot-mac-release-arm64-try,vm-aot-mac-release-x64-try,vm-aot-msan-linux-release-x64-try,vm-aot-obfuscate-linux-release-x64-try,vm-aot-tsan-linux-release-x64-try,vm-aot-ubsan-linux-release-x64-try,vm-aot-win-debug-arm64-try,vm-aot-win-debug-x64c-try,vm-aot-win-release-x64-try,vm-appjit-linux-debug-x64-try,vm-asan-linux-release-x64-try,vm-checked-mac-release-arm64-try,vm-eager-optimization-linux-release-ia32-try,vm-eager-optimization-linux-release-x64-try,vm-kernel-linux-debug-x64-try,vm-kernel-precomp-linux-release-x64-try,vm-linux-debug-ia32-try,vm-linux-debug-simriscv64-try,vm-linux-debug-x64-try,vm-mac-debug-arm64-try,vm-mac-debug-x64-try,vm-msan-linux-release-x64-try,vm-reload-linux-debug-x64-try,vm-reload-rollback-linux-debug-x64-try,vm-tsan-linux-release-x64-try,vm-ubsan-linux-release-x64-try,vm-win-debug-arm64-try,vm-win-debug-x64-try,vm-win-debug-x64c-try,vm-win-release-ia32-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/301601 Reviewed-by: Ryan Macnak <rmacnak@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com> |
||
---|---|---|
.. | ||
concurrency | ||
vm |