[torque] Add DashifyString function for module names.

Module names in torque are allowed to have underscores but not dashes.
To stay consistent with C++ file naming conventions, the underscores
in module names are replaced by dashes for file names.

Example:

module typed_array {} would now generate:
builtins-typed-array-from-dsl-gen.(cc|h)

instead of:
builtins-typed_array-from-dsl-gen.(cc|h)

R=danno@chromium.org

Change-Id: Iff42d7b9b5f65c378ee30f9d884ab6a3a3cd42a7
Reviewed-on: https://chromium-review.googlesource.com/1016460
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Daniel Clifford <danno@chromium.org>
Cr-Commit-Position: refs/heads/master@{#52686}
This commit is contained in:
Simon Zünd 2018-04-18 10:07:20 +02:00 committed by Commit Bot
parent 29b65c39c0
commit a0d4005c99
3 changed files with 18 additions and 7 deletions

View File

@ -55,7 +55,8 @@ void ImplementationVisitor::Visit(ModuleDeclaration* decl) {
if (decl->IsDefault()) { if (decl->IsDefault()) {
source << "#include \"src/code-stub-assembler.h\""; source << "#include \"src/code-stub-assembler.h\"";
} else { } else {
source << "#include \"src/builtins/builtins-" + module->name() + "-gen.h\""; source << "#include \"src/builtins/builtins-" +
DashifyString(module->name()) + "-gen.h\"";
} }
source << std::endl; source << std::endl;
source << "#include \"src/builtins/builtins-utils-gen.h\"" << std::endl; source << "#include \"src/builtins/builtins-utils-gen.h\"" << std::endl;
@ -64,7 +65,8 @@ void ImplementationVisitor::Visit(ModuleDeclaration* decl) {
source << "#include \"src/heap/factory-inl.h\"" << std::endl; source << "#include \"src/heap/factory-inl.h\"" << std::endl;
source << "#include \"src/objects.h\"" << std::endl; source << "#include \"src/objects.h\"" << std::endl;
source << "#include \"builtins-" + module->name() + "-from-dsl-gen.h\""; source << "#include \"builtins-" + DashifyString(module->name()) +
"-from-dsl-gen.h\"";
source << std::endl << std::endl; source << std::endl << std::endl;
source << "namespace v8 {" << std::endl source << "namespace v8 {" << std::endl
@ -83,7 +85,8 @@ void ImplementationVisitor::Visit(ModuleDeclaration* decl) {
if (decl->IsDefault()) { if (decl->IsDefault()) {
header << "#include \"src/code-stub-assembler.h\""; header << "#include \"src/code-stub-assembler.h\"";
} else { } else {
header << "#include \"src/builtins/builtins-" + module->name() + "-gen.h\"" header << "#include \"src/builtins/builtins-" +
DashifyString(module->name()) + "-gen.h\""
<< std::endl; << std::endl;
} }
header << std::endl << std::endl; header << std::endl << std::endl;
@ -809,12 +812,13 @@ Label* ImplementationVisitor::GetLabel(SourcePosition pos,
void ImplementationVisitor::GenerateImplementation(const std::string& dir, void ImplementationVisitor::GenerateImplementation(const std::string& dir,
Module* module) { Module* module) {
std::string new_source(module->source()); std::string new_source(module->source());
std::string source_file_name = std::string base_file_name =
dir + "/builtins-" + module->name() + "-from-dsl-gen.cc"; "builtins-" + DashifyString(module->name()) + "-from-dsl-gen";
std::string source_file_name = dir + "/" + base_file_name + ".cc";
ReplaceFileContentsIfDifferent(source_file_name, new_source); ReplaceFileContentsIfDifferent(source_file_name, new_source);
std::string new_header(module->header()); std::string new_header(module->header());
std::string header_file_name = std::string header_file_name = dir + "/" + base_file_name + ".h";
dir + "/builtins-" + module->name() + "-from-dsl-gen.h";
ReplaceFileContentsIfDifferent(header_file_name, new_header); ReplaceFileContentsIfDifferent(header_file_name, new_header);
} }

View File

@ -34,6 +34,12 @@ std::string CamelifyString(const std::string& underscore_string) {
return result; return result;
} }
std::string DashifyString(const std::string& underscore_string) {
std::string result = underscore_string;
std::replace(result.begin(), result.end(), '_', '-');
return result;
}
void ReplaceFileContentsIfDifferent(const std::string& file_path, void ReplaceFileContentsIfDifferent(const std::string& file_path,
const std::string& contents) { const std::string& contents) {
std::ifstream old_contents_stream(file_path.c_str()); std::ifstream old_contents_stream(file_path.c_str());

View File

@ -18,6 +18,7 @@ typedef std::vector<std::string> NameVector;
void ReportError(const std::string& error); void ReportError(const std::string& error);
std::string CamelifyString(const std::string& underscore_string); std::string CamelifyString(const std::string& underscore_string);
std::string DashifyString(const std::string& underscore_string);
void ReplaceFileContentsIfDifferent(const std::string& file_path, void ReplaceFileContentsIfDifferent(const std::string& file_path,
const std::string& contents); const std::string& contents);