dart-sdk/tests/ffi
Daco Harkes da39a4abff [vm/ffi] Remove try-catch from ffi trampoline if no handle scope
https://dart-review.googlesource.com/c/sdk/+/145591 introduced a try
catch into FFI calls to call ExitHandleScope on the exception path.
However, we only need this try-catch if we actually need to exit the
handle scope on the exception path, which is not the case if we have
no handles in the signature. So this CL makes the try catch optional.

This speeds up ffi calls without handles (tested on JIT x64):
FfiCall.Uint8x01(RunTime): 206.4801280066068 us.
->
FfiCall.Uint8x01(RunTime): 203.7240782236708 us.

Also adds a test that checks that an exception can still be propagated
with Dart_PropagateError from native code when the FFI trampoline has
no try catch.

Change-Id: I9fac7078381c60fb8055b64fff29ea364fbc948f
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-msan-linux-release-x64-try,vm-kernel-precomp-msan-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/+/151239
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2020-06-26 12:03:02 +00:00
..
aliasing_test.dart [vm/ffi] Add script to extract existing positive ffi tests into bundle to be used for flutter/flutter integration test 2019-12-04 13:02:48 +00:00
analysis_options.yaml [vm/ffi] regression test for 37511 2019-08-21 08:10:34 +00:00
callback_tests_utils.dart [vm/ffi] Add tests with very many arguments 2020-01-22 15:21:32 +00:00
coordinate.dart [vm/ffi] NNBD use external fields for structs 2020-05-18 12:22:50 +00:00
coordinate_bare.dart [vm/ffi] NNBD use external fields for structs 2020-05-18 12:22:50 +00:00
data_not_asan_test.dart [vm/ffi] Add script to extract existing positive ffi tests into bundle to be used for flutter/flutter integration test 2019-12-04 13:02:48 +00:00
data_test.dart [vm/ffi] Split FFI tests in NNBD and legacy 2020-01-29 14:04:41 +00:00
dylib_utils.dart [vm/ffi] Split FFI tests in NNBD and legacy 2020-01-29 14:04:41 +00:00
extension_methods_test.dart [vm/ffi] NNBD use external fields for structs 2020-05-18 12:22:50 +00:00
external_typed_data_test.dart [vm/ffi] Split FFI tests in NNBD and legacy 2020-01-29 14:04:41 +00:00
ffi.status [test/ffi] Disable handles test on msan 2020-06-17 08:26:39 +00:00
ffi_test_helpers.dart [vm/ffi] Remove Pointer.offsetBy. 2019-10-10 15:44:27 +00:00
function_callbacks_many_test.dart [vm/ffi] Add tests with very many arguments 2020-01-22 15:21:32 +00:00
function_callbacks_test.dart [vm/ffi] Add tests with very many arguments 2020-01-22 15:21:32 +00:00
function_callbacks_very_many_test.dart [vm/ffi] Add tests with very many arguments 2020-01-22 15:21:32 +00:00
function_structs_test.dart [test/ffi] Re-enable disabled tests 2020-02-19 08:53:39 +00:00
function_test.dart [vm/ffi] Split out tests which use nulls 2020-01-20 16:01:08 +00:00
function_very_many_test.dart [vm/ffi] Add tests with very many arguments 2020-01-22 15:21:32 +00:00
hardfp_test.dart [vm/ffi] Add tests with very many arguments 2020-01-22 15:21:32 +00:00
negative_function_test.dart [vm/ffi] Change asFunction and lookFunction to extension methods 2020-02-14 15:46:37 +00:00
prepare_flutter_bundle.dart [vm/ffi] Split up some tests/ffi into vmspecific and non-vmspecific 2019-12-04 15:56:08 +00:00
regress_37254_test.dart [vm/ffi] Split FFI tests in NNBD and legacy 2020-01-29 14:04:41 +00:00
regress_39044_test.dart [vm] Do not fuse constants with different representations 2019-10-23 12:59:28 +00:00
regress_39063_test.dart [vm/ffi] Support moves with temp in ffi call 2019-10-23 17:42:41 +00:00
regress_39885_test.dart [vm] Fix IntConverter canonicalization 2020-01-02 12:43:36 +00:00
regress_40537_test.dart [vm/ffi] Fix sign extension for small int arguments on x64 Linux/MacOS 2020-02-10 17:05:14 +00:00
sizeof_test.dart [vm/ffi] Split up some tests/ffi into vmspecific and non-vmspecific 2019-12-04 15:56:08 +00:00
snapshot_test.dart [vm/concurrency] Run all isolate related tests with/without enabling isolate groups 2019-11-27 17:23:31 +00:00
stacktrace_regress_37910_test.dart [vm/ffi] Fix crashes on stacktraces and debugging with force-optimized frames. 2019-08-26 10:18:34 +00:00
structs_test.dart [Cleanup] Removes deprecated --enable-inlining-annotations; updates annotation. 2020-02-25 12:09:10 +00:00
variance_function_test.dart [vm/ffi] Split FFI tests in NNBD and legacy 2020-01-29 14:04:41 +00:00
very_large_struct.dart [vm/ffi] NNBD use external fields for structs 2020-05-18 12:22:50 +00:00
vmspecific_dynamic_library_test.dart [vm/ffi] Split out tests which use nulls 2020-01-20 16:01:08 +00:00
vmspecific_enable_ffi_test.dart [vm/ffi] Split FFI tests in NNBD and legacy 2020-01-29 14:04:41 +00:00
vmspecific_function_callbacks_exit_test.dart [vm/ffi] Add tests with very many arguments 2020-01-22 15:21:32 +00:00
vmspecific_function_callbacks_negative_test.dart [vm/ffi] Split up function_callbacks_test 2019-12-12 16:48:40 +00:00
vmspecific_function_callbacks_test.dart [vm/ffi] Add tests with very many arguments 2020-01-22 15:21:32 +00:00
vmspecific_function_gc_test.dart [vm/ffi] Split out tests which use nulls 2020-01-20 16:01:08 +00:00
vmspecific_function_test.dart [vm/ffi] Split up some tests/ffi into vmspecific and non-vmspecific 2019-12-04 15:56:08 +00:00
vmspecific_handle_dynamically_linked_test.dart [vm/ffi] Expose a subset of dart_(native_)api.h for dynamic linking. 2020-06-18 07:30:43 +00:00
vmspecific_handle_test.dart [vm/ffi] Remove try-catch from ffi trampoline if no handle scope 2020-06-26 12:03:02 +00:00
vmspecific_highmem_32bit_test.dart [vm/ffi] Split up some tests/ffi into vmspecific and non-vmspecific 2019-12-04 15:56:08 +00:00
vmspecific_object_gc_test.dart [vm/ffi] Split up some tests/ffi into vmspecific and non-vmspecific 2019-12-04 15:56:08 +00:00
vmspecific_regress_37100_test.dart [vm/ffi] Split up some tests/ffi into vmspecific and non-vmspecific 2019-12-04 15:56:08 +00:00
vmspecific_regress_37511_callbacks_test.dart [vm/ffi] Split up some tests/ffi into vmspecific and non-vmspecific 2019-12-04 15:56:08 +00:00
vmspecific_regress_37511_test.dart [vm/ffi] Split up some tests/ffi into vmspecific and non-vmspecific 2019-12-04 15:56:08 +00:00
vmspecific_regress_37780_test.dart [vm/ffi] Split up some tests/ffi into vmspecific and non-vmspecific 2019-12-04 15:56:08 +00:00
vmspecific_regress_38993_test.dart [vm/ffi] Split up some tests/ffi into vmspecific and non-vmspecific 2019-12-04 15:56:08 +00:00
vmspecific_send_port_id_test.dart [vm/ffi] Split up some tests/ffi into vmspecific and non-vmspecific 2019-12-04 15:56:08 +00:00
vmspecific_static_checks_test.dart [vm/ffi] Convert Objects to Dart_Handles in FFI calls 2020-06-12 11:14:22 +00:00
vmspecific_variance_function_checks_test.dart [vm/ffi] Split up some tests/ffi into vmspecific and non-vmspecific 2019-12-04 15:56:08 +00:00