5#ifndef V8_FLAGS_FLAGS_H_
6#define V8_FLAGS_FLAGS_H_
12#if V8_ENABLE_WEBASSEMBLY
36 static_assert(std::is_same_v<std::decay_t<T>, T>);
37 static_assert(std::is_arithmetic_v<T> ||
38 std::is_same_v<std::optional<bool>, T> ||
39 std::is_same_v<const char*, T>);
69#define FLAG_MODE_DECLARE
71#undef FLAG_MODE_DECLARE
84 const char* usage =
nullptr)
85 : exit_behavior_(exit_behavior), usage_(usage) {}
89 const char*
usage() {
return usage_; }
114 static int SetFlagsFromCommandLine(
115 int* argc,
char** argv,
bool remove_flags,
121 static int SetFlagsFromString(
const char* str,
size_t len);
124 static void FreezeFlags();
127 static bool IsFrozen();
131 static void ReleaseDynamicAllocations();
134 static void PrintHelp();
136 static void PrintValues();
140 static void PrintFeatureFlagsJSON();
144 static void ResolveContradictionsWhenFuzzing();
147 static void EnforceFlagImplications();
151 static uint32_t Hash();
157 static void ResetFlagHash();
160 template <
typename T>
166 if (new_value !=
value_) {
167 FlagList::ResetFlagHash();
HelpOptions(ExitBehavior exit_behavior=kExit, const char *usage=nullptr)
ExitBehavior exit_behavior_
constexpr FlagValue(T value)
constexpr T value() const
FlagValue< T > & operator=(T new_value)
V8_EXPORT_PRIVATE FlagValues v8_flags
#define V8_EXPORT_PRIVATE
FlagValues & operator=(const FlagValues &)=delete
FlagValues(const FlagValues &)=delete
FlagValues & operator=(FlagValues &&)=delete
FlagValues(FlagValues &&)=delete