summaryrefslogtreecommitdiff
path: root/deps/v8/src/torque/declarations.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/torque/declarations.cc')
-rw-r--r--deps/v8/src/torque/declarations.cc37
1 files changed, 18 insertions, 19 deletions
diff --git a/deps/v8/src/torque/declarations.cc b/deps/v8/src/torque/declarations.cc
index 9b2964d210..f001b98355 100644
--- a/deps/v8/src/torque/declarations.cc
+++ b/deps/v8/src/torque/declarations.cc
@@ -233,9 +233,15 @@ void Declarations::DeclareStruct(Module* module, const std::string& name,
DeclareType(name, new_type);
}
-Label* Declarations::DeclareLabel(const std::string& name) {
+Label* Declarations::DeclareLabel(const std::string& name,
+ base::Optional<Statement*> statement) {
CheckAlreadyDeclared(name, "label");
- Label* result = new Label(name);
+ bool deferred = false;
+ if (statement) {
+ BlockStatement* block = BlockStatement::DynamicCast(*statement);
+ deferred = block && block->deferred;
+ }
+ Label* result = new Label(name, deferred);
Declare(name, std::unique_ptr<Declarable>(result));
return result;
}
@@ -298,38 +304,31 @@ RuntimeFunction* Declarations::DeclareRuntimeFunction(
return result;
}
+Variable* Declarations::CreateVariable(const std::string& var, const Type* type,
+ bool is_const) {
+ return RegisterDeclarable(
+ std::unique_ptr<Variable>(new Variable(var, type, is_const)));
+}
+
Variable* Declarations::DeclareVariable(const std::string& var,
const Type* type, bool is_const) {
- std::string name(var + "_" +
- std::to_string(GetNextUniqueDeclarationNumber()));
- std::replace(name.begin(), name.end(), '.', '_');
CheckAlreadyDeclared(var, "variable");
- Variable* result = new Variable(var, name, type, is_const);
+ Variable* result = new Variable(var, type, is_const);
Declare(var, std::unique_ptr<Declarable>(result));
return result;
}
Parameter* Declarations::DeclareParameter(const std::string& name,
- const std::string& var_name,
+ std::string external_name,
const Type* type) {
CheckAlreadyDeclared(name, "parameter");
- Parameter* result = new Parameter(name, type, var_name);
- Declare(name, std::unique_ptr<Declarable>(result));
- return result;
-}
-
-Label* Declarations::DeclarePrivateLabel(const std::string& raw_name) {
- std::string name =
- raw_name + "_" + std::to_string(GetNextUniqueDeclarationNumber());
- CheckAlreadyDeclared(name, "label");
- Label* result = new Label(name);
+ Parameter* result = new Parameter(name, std::move(external_name), type);
Declare(name, std::unique_ptr<Declarable>(result));
return result;
}
void Declarations::DeclareExternConstant(const std::string& name,
- const Type* type,
- const std::string& value) {
+ const Type* type, std::string value) {
CheckAlreadyDeclared(name, "constant, parameter or arguments");
ExternConstant* result = new ExternConstant(name, type, value);
Declare(name, std::unique_ptr<Declarable>(result));