580f44aa83
* Move FFI tests into a separate test suite. They never belonged in standalone_2/ since they are not only available in the standalone VM. Also, we want to have a separate status file. * Add new "SharedObjects" option to test files to copy needed shared objects to the Android device for testing. * Add support to compiler/runtime_configuration.dart for testing JIT-mode on Android. * Add new configurations and builders to test_matrix.json to test JIT-mode on Android. * Clean up status file entries for FFI (we didn't need to special-case stress & subtype tests). Change-Id: Ifb32ef7051754f477d00ecd7a0f9b19ca8a66eae Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97334 Commit-Queue: Samir Jindel <sjindel@google.com> Reviewed-by: William Hesse <whesse@google.com> Reviewed-by: Daco Harkes <dacoharkes@google.com>
68 lines
1.2 KiB
Dart
68 lines
1.2 KiB
Dart
// 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.
|
|
|
|
library FfiTestCoordinateBare;
|
|
|
|
import 'dart:ffi' as ffi;
|
|
|
|
/// Large sample struct for dart:ffi library.
|
|
@ffi.struct
|
|
class VeryLargeStruct extends ffi.Pointer<ffi.Void> {
|
|
@ffi.Int8()
|
|
int a;
|
|
|
|
@ffi.Int16()
|
|
int b;
|
|
|
|
@ffi.Int32()
|
|
int c;
|
|
|
|
@ffi.Int64()
|
|
int d;
|
|
|
|
@ffi.Uint8()
|
|
int e;
|
|
|
|
@ffi.Uint16()
|
|
int f;
|
|
|
|
@ffi.Uint32()
|
|
int g;
|
|
|
|
@ffi.Uint64()
|
|
int h;
|
|
|
|
@ffi.IntPtr()
|
|
int i;
|
|
|
|
@ffi.Float()
|
|
double j;
|
|
|
|
@ffi.Double()
|
|
double k;
|
|
|
|
@ffi.Pointer()
|
|
VeryLargeStruct parent;
|
|
|
|
@ffi.IntPtr()
|
|
int numChidlren;
|
|
|
|
@ffi.Pointer()
|
|
VeryLargeStruct children;
|
|
|
|
@ffi.Int8()
|
|
int smallLastField;
|
|
|
|
// generated by @ffi.struct annotation
|
|
external static int sizeOf();
|
|
|
|
VeryLargeStruct offsetBy(int offsetInBytes) =>
|
|
super.offsetBy(offsetInBytes).cast();
|
|
|
|
VeryLargeStruct elementAt(int index) => offsetBy(sizeOf() * index);
|
|
|
|
static VeryLargeStruct allocate({int count: 1}) =>
|
|
ffi.allocate<ffi.Uint8>(count: count * sizeOf()).cast();
|
|
}
|