diff options
Diffstat (limited to 'deps/v8/src/flags.cc')
-rw-r--r-- | deps/v8/src/flags.cc | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/deps/v8/src/flags.cc b/deps/v8/src/flags.cc index ef5772dce4..13046097a6 100644 --- a/deps/v8/src/flags.cc +++ b/deps/v8/src/flags.cc @@ -39,6 +39,7 @@ struct Flag { TYPE_MAYBE_BOOL, TYPE_INT, TYPE_UINT, + TYPE_UINT64, TYPE_FLOAT, TYPE_SIZE_T, TYPE_STRING, @@ -78,6 +79,11 @@ struct Flag { return reinterpret_cast<unsigned int*>(valptr_); } + uint64_t* uint64_variable() const { + DCHECK(type_ == TYPE_UINT64); + return reinterpret_cast<uint64_t*>(valptr_); + } + double* float_variable() const { DCHECK(type_ == TYPE_FLOAT); return reinterpret_cast<double*>(valptr_); @@ -121,6 +127,11 @@ struct Flag { return *reinterpret_cast<const unsigned int*>(defptr_); } + uint64_t uint64_default() const { + DCHECK(type_ == TYPE_UINT64); + return *reinterpret_cast<const uint64_t*>(defptr_); + } + double float_default() const { DCHECK(type_ == TYPE_FLOAT); return *reinterpret_cast<const double*>(defptr_); @@ -152,6 +163,8 @@ struct Flag { return *int_variable() == int_default(); case TYPE_UINT: return *uint_variable() == uint_default(); + case TYPE_UINT64: + return *uint64_variable() == uint64_default(); case TYPE_FLOAT: return *float_variable() == float_default(); case TYPE_SIZE_T: @@ -184,6 +197,9 @@ struct Flag { case TYPE_UINT: *uint_variable() = uint_default(); break; + case TYPE_UINT64: + *uint64_variable() = uint64_default(); + break; case TYPE_FLOAT: *float_variable() = float_default(); break; @@ -217,6 +233,8 @@ static const char* Type2String(Flag::FlagType type) { case Flag::TYPE_INT: return "int"; case Flag::TYPE_UINT: return "uint"; + case Flag::TYPE_UINT64: + return "uint64"; case Flag::TYPE_FLOAT: return "float"; case Flag::TYPE_SIZE_T: return "size_t"; @@ -243,6 +261,9 @@ std::ostream& operator<<(std::ostream& os, const Flag& flag) { // NOLINT case Flag::TYPE_UINT: os << *flag.uint_variable(); break; + case Flag::TYPE_UINT64: + os << *flag.uint64_variable(); + break; case Flag::TYPE_FLOAT: os << *flag.float_variable(); break; @@ -464,6 +485,12 @@ int FlagList::SetFlagsFromCommandLine(int* argc, return_code = j; } break; + case Flag::TYPE_UINT64: + if (!TryParseUnsigned(flag, arg, value, &endp, + flag->uint64_variable())) { + return_code = j; + } + break; case Flag::TYPE_FLOAT: *flag->float_variable() = strtod(value, &endp); break; @@ -604,13 +631,14 @@ void FlagList::PrintHelp() { CpuFeatures::PrintTarget(); CpuFeatures::PrintFeatures(); - OFStream os(stdout); + StdoutStream os; os << "Synopsis:\n" " shell [options] [--shell] [<file>...]\n" " d8 [options] [-e <string>] [--shell] [[--module] <file>...]\n\n" " -e execute a string in V8\n" " --shell run an interactive JavaScript shell\n" " --module execute a file as a JavaScript module\n\n" + "Note: the --module option is implicitly enabled for *.mjs files.\n\n" "Options:\n"; for (const Flag& f : flags) { @@ -633,9 +661,9 @@ void ComputeFlagListHash() { #ifdef DEBUG modified_args_as_string << "debug"; #endif // DEBUG -#ifdef V8_EMBEDDED_BUILTINS - modified_args_as_string << "embedded"; -#endif // V8_EMBEDDED_BUILTINS + if (FLAG_embedded_builtins) { + modified_args_as_string << "embedded"; + } for (size_t i = 0; i < num_flags; ++i) { Flag* current = &flags[i]; if (!current->IsDefault()) { |