| // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file | 
 | // for details. All rights reserved. Use of this source code is governed by a | 
 | // BSD-style license that can be found in the LICENSE file. | 
 | // | 
 | // Dart test program for testing dart:ffi function pointers. | 
 | // | 
 | // VMOptions= | 
 | // VMOptions=--deterministic --optimization-counter-threshold=10 | 
 | // VMOptions=--use-slow-path | 
 | // VMOptions=--use-slow-path --stacktrace-every=100 | 
 | // VMOptions=--write-protect-code --no-dual-map-code | 
 | // VMOptions=--write-protect-code --no-dual-map-code --use-slow-path | 
 | // VMOptions=--write-protect-code --no-dual-map-code --stacktrace-every=100 | 
 | // SharedObjects=ffi_test_functions | 
 |  | 
 | import 'dart:ffi'; | 
 |  | 
 | import 'dylib_utils.dart'; | 
 |  | 
 | void main() { | 
 |   for (int i = 0; i < 100; ++i) { | 
 |     testLookupFunctionPointerNativeType(); | 
 |   } | 
 | } | 
 |  | 
 | final ffiTestFunctions = dlopenPlatformSpecific("ffi_test_functions"); | 
 |  | 
 | typedef NativeTypeNFT = Pointer<NativeType> Function( | 
 |     Pointer<Pointer<NativeType>>, Int8); | 
 | typedef NativeTypeFT = Pointer<NativeType> Function( | 
 |     Pointer<Pointer<NativeType>>, int); | 
 |  | 
 | void testLookupFunctionPointerNativeType() { | 
 |   // The function signature does not match up, but that does not matter since | 
 |   // this test does not use the trampoline. | 
 |   ffiTestFunctions.lookupFunction<NativeTypeNFT, NativeTypeFT>("LargePointer"); | 
 | } |