dart-sdk/tests/ffi_2
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
analysis_options.yaml
callback_tests_utils.dart
coordinate.dart
coordinate_bare.dart
data_not_asan_test.dart
data_test.dart
dylib_utils.dart
extension_methods_test.dart
external_typed_data_test.dart
ffi_2.status [test/ffi] Disable handles test on msan 2020-06-17 08:26:39 +00:00
ffi_test_helpers.dart
function_callbacks_many_test.dart
function_callbacks_test.dart
function_callbacks_very_many_test copy.dart
function_callbacks_very_many_test.dart
function_structs_test.dart
function_test.dart
hardfp_test.dart
negative_function_test.dart [vm/ffi] Change asFunction and lookFunction to extension methods 2020-02-14 15:46:37 +00:00
null_regress_39068_test.dart
null_test.dart
prepare_flutter_bundle.dart
regress_37254_test.dart
regress_39044_test.dart
regress_39063_test.dart
regress_39885_test.dart
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
snapshot_test.dart
stacktrace_regress_37910_test.dart
structs_test.dart
variance_function_test.dart
very_large_struct.dart
vmspecific_dynamic_library_test.dart
vmspecific_enable_ffi_test.dart
vmspecific_function_callbacks_exit_test.dart
vmspecific_function_callbacks_negative_test.dart
vmspecific_function_callbacks_test.dart
vmspecific_function_gc_test.dart
vmspecific_function_test.dart
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
vmspecific_null_test.dart
vmspecific_object_gc_test.dart
vmspecific_regress_37100_test.dart
vmspecific_regress_37511_callbacks_test.dart
vmspecific_regress_37511_test.dart
vmspecific_regress_37780_test.dart
vmspecific_regress_38993_test.dart
vmspecific_send_port_id_test.dart
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