6544c69e23
This includes support for calling Dart_PropagateError in native code when doing FFI calls, and catching uncaught exceptions with Dart_IsError when doing FFI callbacks. The support for Dart_PropagateError adds a catch entry to the FFI trampoline, which prevents inlining these trampolines in AOT. This regresses the FfiCall benchmarks by 1-2% in AOT. In addition, Dart_PropagateError requires maintaining a bit whether we entered native/VM code from generated code through FFI or not. That way we can do the proper transition on the exception path. When entering generated code, we store this bit on the stack, right after the entry frame. Design: http://go/dart-ffi-handles Issue: https://github.com/dart-lang/sdk/issues/36858 Issue: https://github.com/dart-lang/sdk/issues/41319 Change-Id: Idfd7ff69132fb29cc730931a4113d914d4437396 Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,app-kernel-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-kernel-precomp-linux-debug-x64-try,vm-dartkb-linux-release-x64-abi-try,vm-kernel-precomp-android-release-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-precomp-android-release-arm_x64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,dart-sdk-linux-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try,front-end-linux-release-x64-try,vm-kernel-precomp-win-release-x64-try,vm-kernel-mac-debug-x64-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-nnbd-linux-debug-x64-try,analyzer-nnbd-linux-release-try,front-end-nnbd-linux-release-x64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/145591 Commit-Queue: Daco Harkes <dacoharkes@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com> Reviewed-by: Alexander Markov <alexmarkov@google.com>
40 lines
1.1 KiB
Plaintext
40 lines
1.1 KiB
Plaintext
# This file is used by tools/utils.py to generate version strings.
|
|
# The numbers are changed as follows:
|
|
#
|
|
# * New release cycle has begun (i.e. stable release was just made):
|
|
# - increase MINOR by 1
|
|
# - set "PATCH 0"
|
|
# - set "PRERELEASE 0"
|
|
# - set "PRERELEASE_PATCH 0"
|
|
#
|
|
# * Doing a push-to-trunk from bleeding_edge:
|
|
# (The first push-to-trunk in the release cycle will set PRERELEASE to 0)
|
|
# - increase PRERELEASE by 1
|
|
# - set "PRERELEASE_PATCH 0"
|
|
#
|
|
# * Doing a cherry-pick to trunk:
|
|
# - increase PRERELEASE_PATCH by 1
|
|
#
|
|
# * Making a stable release (i.e. new stable branch):
|
|
# - set "PRERELEASE 0"
|
|
# - set "PRERELEASE_PATCH 0"
|
|
# The new stable release version will sort higher than the prereleases.
|
|
#
|
|
# * Making cherry-picks to stable channel
|
|
# - increase PATCH by 1
|
|
#
|
|
# * Making a change to the ABI:
|
|
# - increase ABI_VERSION by 1
|
|
#
|
|
# * Deprecating an old ABI version:
|
|
# - increase OLDEST_SUPPORTED_ABI_VERSION to the version that is supported.
|
|
#
|
|
CHANNEL be
|
|
MAJOR 2
|
|
MINOR 9
|
|
PATCH 0
|
|
PRERELEASE 0
|
|
PRERELEASE_PATCH 0
|
|
ABI_VERSION 37
|
|
OLDEST_SUPPORTED_ABI_VERSION 37
|