Files
sdk/runtime/vm/compiler/ffi/recognized_method.cc
Daco Harkes f98a2138b7 [vm] Run clang-format on code base
When uploading CLs, the presubmit checks verify that the lines in the
diff are formatted correctly according to `git cl format runtime`.

However, when `buildtools/<os>-<arch>/clang/bin/clang-format` is
updated, it does not force reformatting of files that would be
reformatted.

This leads to two issues:
* Inconsistent style within the code base and within a single file.
* Spurious reformatting in CLs when (1) clang-format is used on the
  whole file, or (2) the diff lines overlap.

`clang-format` doesn't change that frequently, so in general this is
not a large issue, but I've seen a bit too many "spurious formatting,
please revert" comments on CLs recently.

This CL formats the runtime to be in line with the current pinned
`clang-format`:

```
$ find runtime/ -iname *.h -o -iname *.cc | xargs buildtools/mac-arm64/clang/bin/clang-format -i
```

`git cl format` (which only formats changed lines, and does so with
`clang-format`) seems to not agree with itself, or clang-format, or
cpplint in a handful of places. This CL adds `// clang-format off`
for these. (See previous patchsets for the specific instances.)

TEST=A variety of bots including GCC, MacOS and Windows.

Change-Id: I470892e898971899fda14bb3b8f2c8efefd67686
Cq-Include-Trybots: luci.dart.try:vm-gcc-linux-try,vm-ffi-qemu-linux-release-riscv64-try,vm-ffi-qemu-linux-release-arm-try,vm-aot-win-debug-x64-try,vm-win-debug-x64c-try,vm-mac-debug-x64-try,vm-mac-debug-arm64-try,vm-aot-linux-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/362780
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2024-04-17 19:14:41 +00:00

153 lines
4.8 KiB
C++

// Copyright (c) 2020, 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.
#include "vm/compiler/ffi/recognized_method.h"
#include "vm/symbols.h"
namespace dart {
namespace compiler {
namespace ffi {
classid_t ElementTypedDataCid(classid_t class_id) {
switch (class_id) {
case kFfiInt8Cid:
return kTypedDataInt8ArrayCid;
case kFfiUint8Cid:
return kTypedDataUint8ArrayCid;
case kFfiInt16Cid:
return kTypedDataInt16ArrayCid;
case kFfiUint16Cid:
return kTypedDataUint16ArrayCid;
case kFfiInt32Cid:
return kTypedDataInt32ArrayCid;
case kFfiUint32Cid:
return kTypedDataUint32ArrayCid;
case kFfiInt64Cid:
return kTypedDataInt64ArrayCid;
case kFfiUint64Cid:
return kTypedDataUint64ArrayCid;
case kPointerCid:
return target::kWordSize == 4 ? kTypedDataUint32ArrayCid
: kTypedDataUint64ArrayCid;
case kFfiFloatCid:
return kTypedDataFloat32ArrayCid;
case kFfiDoubleCid:
return kTypedDataFloat64ArrayCid;
default:
UNREACHABLE();
}
}
classid_t ElementExternalTypedDataCid(classid_t class_id) {
switch (class_id) {
case kFfiInt8Cid:
return kExternalTypedDataInt8ArrayCid;
case kFfiUint8Cid:
return kExternalTypedDataUint8ArrayCid;
case kFfiInt16Cid:
return kExternalTypedDataInt16ArrayCid;
case kFfiUint16Cid:
return kExternalTypedDataUint16ArrayCid;
case kFfiInt32Cid:
return kExternalTypedDataInt32ArrayCid;
case kFfiUint32Cid:
return kExternalTypedDataUint32ArrayCid;
case kFfiInt64Cid:
return kExternalTypedDataInt64ArrayCid;
case kFfiUint64Cid:
return kExternalTypedDataUint64ArrayCid;
case kFfiFloatCid:
return kExternalTypedDataFloat32ArrayCid;
case kFfiDoubleCid:
return kExternalTypedDataFloat64ArrayCid;
default:
UNREACHABLE();
}
}
classid_t RecognizedMethodTypeArgCid(MethodRecognizer::Kind kind) {
switch (kind) {
#define LOAD_STORE(type) \
case MethodRecognizer::kFfiLoad##type: \
case MethodRecognizer::kFfiStore##type: \
return kFfi##type##Cid;
CLASS_LIST_FFI_NUMERIC_FIXED_SIZE(LOAD_STORE)
#undef LOAD_STORE
case MethodRecognizer::kFfiLoadFloatUnaligned:
case MethodRecognizer::kFfiStoreFloatUnaligned:
return kFfiFloatCid;
case MethodRecognizer::kFfiLoadDoubleUnaligned:
case MethodRecognizer::kFfiStoreDoubleUnaligned:
return kFfiDoubleCid;
case MethodRecognizer::kFfiLoadPointer:
case MethodRecognizer::kFfiStorePointer:
return kPointerCid;
#define AS_EXTERNAL_TYPED_DATA(type) \
case MethodRecognizer::kFfiAsExternalTypedData##type: \
return kFfi##type##Cid;
CLASS_LIST_FFI_NUMERIC_FIXED_SIZE(AS_EXTERNAL_TYPED_DATA)
#undef AS_EXTERNAL_TYPED_DATA
default:
UNREACHABLE();
}
}
AlignmentType RecognizedMethodAlignment(MethodRecognizer::Kind kind) {
switch (kind) {
#define LOAD_STORE(type) \
case MethodRecognizer::kFfiLoad##type: \
case MethodRecognizer::kFfiStore##type: \
return kAlignedAccess;
CLASS_LIST_FFI_NUMERIC_FIXED_SIZE(LOAD_STORE)
LOAD_STORE(Pointer)
#undef LOAD_STORE
case MethodRecognizer::kFfiLoadFloatUnaligned:
case MethodRecognizer::kFfiStoreFloatUnaligned:
case MethodRecognizer::kFfiLoadDoubleUnaligned:
case MethodRecognizer::kFfiStoreDoubleUnaligned:
return kUnalignedAccess;
default:
UNREACHABLE();
}
}
MethodRecognizer::Kind FfiLoad(const NativeType& native_type) {
if (native_type.IsPrimitive()) {
switch (native_type.AsPrimitive().representation()) {
#define CASE(type) \
case k##type: \
return MethodRecognizer::kFfiLoad##type;
CLASS_LIST_FFI_NUMERIC_FIXED_SIZE(CASE)
#undef CASE
default:
break;
}
}
UNIMPLEMENTED();
}
MethodRecognizer::Kind FfiStore(const NativeType& native_type) {
if (native_type.IsPrimitive()) {
switch (native_type.AsPrimitive().representation()) {
#define CASE(type) \
case k##type: \
return MethodRecognizer::kFfiStore##type;
CLASS_LIST_FFI_NUMERIC_FIXED_SIZE(CASE)
#undef CASE
default:
break;
}
}
UNIMPLEMENTED();
}
} // namespace ffi
} // namespace compiler
} // namespace dart