[base] Remove type-traits.h

Replace by std types defined in <type-traits> since C++17.

R=mslekova@chromium.org

Bug: v8:12425
Change-Id: I7ec8454634ecb63a3da4f93412d7a6c5002bb7c6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3572045
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79818}
This commit is contained in:
Clemens Backes 2022-04-06 14:21:15 +02:00 committed by V8 LUCI CQ
parent c27b15b4f1
commit c7d5491d64
5 changed files with 20 additions and 70 deletions

View File

@ -666,7 +666,6 @@ filegroup(
"src/base/template-utils.h", "src/base/template-utils.h",
"src/base/timezone-cache.h", "src/base/timezone-cache.h",
"src/base/threaded-list.h", "src/base/threaded-list.h",
"src/base/type-traits.h",
"src/base/utils/random-number-generator.cc", "src/base/utils/random-number-generator.cc",
"src/base/utils/random-number-generator.h", "src/base/utils/random-number-generator.h",
"src/base/vector.h", "src/base/vector.h",

View File

@ -5193,7 +5193,6 @@ v8_component("v8_libbase") {
"src/base/template-utils.h", "src/base/template-utils.h",
"src/base/threaded-list.h", "src/base/threaded-list.h",
"src/base/timezone-cache.h", "src/base/timezone-cache.h",
"src/base/type-traits.h",
"src/base/utils/random-number-generator.cc", "src/base/utils/random-number-generator.cc",
"src/base/utils/random-number-generator.h", "src/base/utils/random-number-generator.h",
"src/base/v8-fallthrough.h", "src/base/v8-fallthrough.h",

View File

@ -1,48 +0,0 @@
// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef V8_BASE_TYPE_TRAITS_H_
#define V8_BASE_TYPE_TRAITS_H_
#include <type_traits>
namespace v8 {
namespace internal {
// Conjunction metafunction.
template <class... Args>
struct conjunction;
template <>
struct conjunction<> : std::true_type {};
template <class T>
struct conjunction<T> : T {};
template <class T, class... Args>
struct conjunction<T, Args...>
: std::conditional<T::value, conjunction<Args...>, T>::type {};
// Disjunction metafunction.
template <class... Args>
struct disjunction;
template <>
struct disjunction<> : std::true_type {};
template <class T>
struct disjunction<T> : T {};
template <class T, class... Args>
struct disjunction<T, Args...>
: std::conditional<T::value, T, disjunction<Args...>>::type {};
// Negation metafunction.
template <class T>
struct negation : std::integral_constant<bool, !T::value> {};
} // namespace internal
} // namespace v8
#endif // V8_BASE_TYPE_TRAITS_H_

View File

@ -9,13 +9,13 @@
#include <map> #include <map>
#include <memory> #include <memory>
#include <sstream> #include <sstream>
#include <type_traits>
// Clients of this interface shouldn't depend on lots of compiler internals. // Clients of this interface shouldn't depend on lots of compiler internals.
// Do not include anything from src/compiler here! // Do not include anything from src/compiler here!
#include "include/cppgc/source-location.h" #include "include/cppgc/source-location.h"
#include "src/base/macros.h" #include "src/base/macros.h"
#include "src/base/optional.h" #include "src/base/optional.h"
#include "src/base/type-traits.h"
#include "src/builtins/builtins.h" #include "src/builtins/builtins.h"
#include "src/codegen/atomic-memory-order.h" #include "src/codegen/atomic-memory-order.h"
#include "src/codegen/code-factory.h" #include "src/codegen/code-factory.h"
@ -1253,9 +1253,9 @@ class V8_EXPORT_PRIVATE CodeAssembler {
template <class... CArgs> template <class... CArgs>
Node* CallCFunction(Node* function, base::Optional<MachineType> return_type, Node* CallCFunction(Node* function, base::Optional<MachineType> return_type,
CArgs... cargs) { CArgs... cargs) {
static_assert(v8::internal::conjunction< static_assert(
std::is_convertible<CArgs, CFunctionArg>...>::value, std::conjunction_v<std::is_convertible<CArgs, CFunctionArg>...>,
"invalid argument types"); "invalid argument types");
return CallCFunction(function, return_type, {cargs...}); return CallCFunction(function, return_type, {cargs...});
} }
@ -1264,9 +1264,9 @@ class V8_EXPORT_PRIVATE CodeAssembler {
Node* CallCFunctionWithoutFunctionDescriptor(Node* function, Node* CallCFunctionWithoutFunctionDescriptor(Node* function,
MachineType return_type, MachineType return_type,
CArgs... cargs) { CArgs... cargs) {
static_assert(v8::internal::conjunction< static_assert(
std::is_convertible<CArgs, CFunctionArg>...>::value, std::conjunction_v<std::is_convertible<CArgs, CFunctionArg>...>,
"invalid argument types"); "invalid argument types");
return CallCFunctionWithoutFunctionDescriptor(function, return_type, return CallCFunctionWithoutFunctionDescriptor(function, return_type,
{cargs...}); {cargs...});
} }
@ -1277,9 +1277,9 @@ class V8_EXPORT_PRIVATE CodeAssembler {
MachineType return_type, MachineType return_type,
SaveFPRegsMode mode, SaveFPRegsMode mode,
CArgs... cargs) { CArgs... cargs) {
static_assert(v8::internal::conjunction< static_assert(
std::is_convertible<CArgs, CFunctionArg>...>::value, std::conjunction_v<std::is_convertible<CArgs, CFunctionArg>...>,
"invalid argument types"); "invalid argument types");
return CallCFunctionWithCallerSavedRegisters(function, return_type, mode, return CallCFunctionWithCallerSavedRegisters(function, return_type, mode,
{cargs...}); {cargs...});
} }

View File

@ -6,8 +6,8 @@
#define V8_COMPILER_RAW_MACHINE_ASSEMBLER_H_ #define V8_COMPILER_RAW_MACHINE_ASSEMBLER_H_
#include <initializer_list> #include <initializer_list>
#include <type_traits>
#include "src/base/type-traits.h"
#include "src/codegen/assembler.h" #include "src/codegen/assembler.h"
#include "src/common/globals.h" #include "src/common/globals.h"
#include "src/compiler/access-builder.h" #include "src/compiler/access-builder.h"
@ -969,9 +969,9 @@ class V8_EXPORT_PRIVATE RawMachineAssembler {
template <class... CArgs> template <class... CArgs>
Node* CallCFunction(Node* function, base::Optional<MachineType> return_type, Node* CallCFunction(Node* function, base::Optional<MachineType> return_type,
CArgs... cargs) { CArgs... cargs) {
static_assert(v8::internal::conjunction< static_assert(
std::is_convertible<CArgs, CFunctionArg>...>::value, std::conjunction_v<std::is_convertible<CArgs, CFunctionArg>...>,
"invalid argument types"); "invalid argument types");
return CallCFunction(function, return_type, {cargs...}); return CallCFunction(function, return_type, {cargs...});
} }
@ -983,9 +983,9 @@ class V8_EXPORT_PRIVATE RawMachineAssembler {
Node* CallCFunctionWithoutFunctionDescriptor(Node* function, Node* CallCFunctionWithoutFunctionDescriptor(Node* function,
MachineType return_type, MachineType return_type,
CArgs... cargs) { CArgs... cargs) {
static_assert(v8::internal::conjunction< static_assert(
std::is_convertible<CArgs, CFunctionArg>...>::value, std::conjunction_v<std::is_convertible<CArgs, CFunctionArg>...>,
"invalid argument types"); "invalid argument types");
return CallCFunctionWithoutFunctionDescriptor(function, return_type, return CallCFunctionWithoutFunctionDescriptor(function, return_type,
{cargs...}); {cargs...});
} }
@ -1000,9 +1000,9 @@ class V8_EXPORT_PRIVATE RawMachineAssembler {
MachineType return_type, MachineType return_type,
SaveFPRegsMode mode, SaveFPRegsMode mode,
CArgs... cargs) { CArgs... cargs) {
static_assert(v8::internal::conjunction< static_assert(
std::is_convertible<CArgs, CFunctionArg>...>::value, std::conjunction_v<std::is_convertible<CArgs, CFunctionArg>...>,
"invalid argument types"); "invalid argument types");
return CallCFunctionWithCallerSavedRegisters(function, return_type, mode, return CallCFunctionWithCallerSavedRegisters(function, return_type, mode,
{cargs...}); {cargs...});
} }