[Interpreter] Support relevant FLAG_s in generate-bytecode-expectations.
FLAG_legacy_const and FLAG_harmony_do_expressions can now be toggled both through the command line and through the option header. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1716793002 Cr-Commit-Position: refs/heads/master@{#34160}
This commit is contained in:
parent
bd6ddb8340
commit
4f0be51987
@ -32,6 +32,8 @@ class ProgramOptions final {
|
|||||||
wrap_(true),
|
wrap_(true),
|
||||||
execute_(true),
|
execute_(true),
|
||||||
top_level_(false),
|
top_level_(false),
|
||||||
|
legacy_const_(false),
|
||||||
|
do_expressions_(false),
|
||||||
const_pool_type_(
|
const_pool_type_(
|
||||||
BytecodeExpectationsPrinter::ConstantPoolType::kMixed) {}
|
BytecodeExpectationsPrinter::ConstantPoolType::kMixed) {}
|
||||||
|
|
||||||
@ -50,6 +52,8 @@ class ProgramOptions final {
|
|||||||
bool wrap() const { return wrap_; }
|
bool wrap() const { return wrap_; }
|
||||||
bool execute() const { return execute_; }
|
bool execute() const { return execute_; }
|
||||||
bool top_level() const { return top_level_; }
|
bool top_level() const { return top_level_; }
|
||||||
|
bool legacy_const() const { return legacy_const_; }
|
||||||
|
bool do_expressions() const { return do_expressions_; }
|
||||||
BytecodeExpectationsPrinter::ConstantPoolType const_pool_type() const {
|
BytecodeExpectationsPrinter::ConstantPoolType const_pool_type() const {
|
||||||
return const_pool_type_;
|
return const_pool_type_;
|
||||||
}
|
}
|
||||||
@ -66,6 +70,8 @@ class ProgramOptions final {
|
|||||||
bool wrap_;
|
bool wrap_;
|
||||||
bool execute_;
|
bool execute_;
|
||||||
bool top_level_;
|
bool top_level_;
|
||||||
|
bool legacy_const_;
|
||||||
|
bool do_expressions_;
|
||||||
BytecodeExpectationsPrinter::ConstantPoolType const_pool_type_;
|
BytecodeExpectationsPrinter::ConstantPoolType const_pool_type_;
|
||||||
std::string input_filename_;
|
std::string input_filename_;
|
||||||
std::string output_filename_;
|
std::string output_filename_;
|
||||||
@ -159,6 +165,10 @@ ProgramOptions ProgramOptions::FromCommandLine(int argc, char** argv) {
|
|||||||
options.execute_ = false;
|
options.execute_ = false;
|
||||||
} else if (strcmp(argv[i], "--top-level") == 0) {
|
} else if (strcmp(argv[i], "--top-level") == 0) {
|
||||||
options.top_level_ = true;
|
options.top_level_ = true;
|
||||||
|
} else if (strcmp(argv[i], "--legacy-const") == 0) {
|
||||||
|
options.legacy_const_ = true;
|
||||||
|
} else if (strcmp(argv[i], "--do-expressions") == 0) {
|
||||||
|
options.do_expressions_ = true;
|
||||||
} else if (strncmp(argv[i], "--output=", 9) == 0) {
|
} else if (strncmp(argv[i], "--output=", 9) == 0) {
|
||||||
options.output_filename_ = argv[i] + 9;
|
options.output_filename_ = argv[i] + 9;
|
||||||
} else if (strncmp(argv[i], "--test-function-name=", 21) == 0) {
|
} else if (strncmp(argv[i], "--test-function-name=", 21) == 0) {
|
||||||
@ -233,6 +243,10 @@ void ProgramOptions::UpdateFromHeader(std::istream& stream) {
|
|||||||
test_function_name_ = line.c_str() + 20;
|
test_function_name_ = line.c_str() + 20;
|
||||||
} else if (line.compare(0, 11, "top level: ") == 0) {
|
} else if (line.compare(0, 11, "top level: ") == 0) {
|
||||||
top_level_ = ParseBoolean(line.c_str() + 11);
|
top_level_ = ParseBoolean(line.c_str() + 11);
|
||||||
|
} else if (line.compare(0, 14, "legacy const: ") == 0) {
|
||||||
|
legacy_const_ = ParseBoolean(line.c_str() + 14);
|
||||||
|
} else if (line.compare(0, 16, "do expressions: ") == 0) {
|
||||||
|
do_expressions_ = ParseBoolean(line.c_str() + 16);
|
||||||
} else if (line == "---") {
|
} else if (line == "---") {
|
||||||
break;
|
break;
|
||||||
} else if (line.empty()) {
|
} else if (line.empty()) {
|
||||||
@ -256,6 +270,8 @@ void ProgramOptions::PrintHeader(std::ostream& stream) const { // NOLINT
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (top_level_) stream << "\ntop level: yes";
|
if (top_level_) stream << "\ntop level: yes";
|
||||||
|
if (legacy_const_) stream << "\nlegacy const: yes";
|
||||||
|
if (do_expressions_) stream << "\ndo expressions: yes";
|
||||||
|
|
||||||
stream << "\n\n";
|
stream << "\n\n";
|
||||||
}
|
}
|
||||||
@ -362,6 +378,9 @@ void GenerateExpectationsFile(std::ostream& stream, // NOLINT
|
|||||||
printer.set_test_function_name(options.test_function_name());
|
printer.set_test_function_name(options.test_function_name());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (options.legacy_const()) i::FLAG_legacy_const = true;
|
||||||
|
if (options.do_expressions()) i::FLAG_harmony_do_expressions = true;
|
||||||
|
|
||||||
stream << "#\n# Autogenerated by generate-bytecode-expectations\n#\n\n";
|
stream << "#\n# Autogenerated by generate-bytecode-expectations\n#\n\n";
|
||||||
options.PrintHeader(stream);
|
options.PrintHeader(stream);
|
||||||
for (const std::string& snippet : snippet_list) {
|
for (const std::string& snippet : snippet_list) {
|
||||||
@ -384,6 +403,8 @@ void PrintUsage(const char* exec_path) {
|
|||||||
" --test-function-name=foo "
|
" --test-function-name=foo "
|
||||||
"Specify the name of the test function.\n"
|
"Specify the name of the test function.\n"
|
||||||
" --top-level Process top level code, not the top-level function."
|
" --top-level Process top level code, not the top-level function."
|
||||||
|
" --legacy-const Enable legacy_const flag.\n"
|
||||||
|
" --do-expressions Enable harmony_do_expressions flag.\n"
|
||||||
" --output=file.name\n"
|
" --output=file.name\n"
|
||||||
" Specify the output file. If not specified, output goes to "
|
" Specify the output file. If not specified, output goes to "
|
||||||
"stdout.\n"
|
"stdout.\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user