Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Unified Diff: runtime/vm/parser.cc

Issue 1528873002: VM: Use read-only handle Object::dynamic_type() where possible. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/parser.h ('k') | runtime/vm/regexp.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/parser.cc
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index 89cf98887ea8f4372cb8eef0662756d43486e83e..ad65fe911b2d0dbb045148fa85940acab8c378de 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -138,7 +138,7 @@ LocalVariable* ParsedFunction::EnsureExpressionTemp() {
LocalVariable* temp =
new (Z) LocalVariable(function_.token_pos(),
Symbols::ExprTemp(),
- Type::ZoneHandle(Type::DynamicType()));
+ Object::dynamic_type());
ASSERT(temp != NULL);
set_expression_temp_var(temp);
}
@@ -152,7 +152,7 @@ void ParsedFunction::EnsureFinallyReturnTemp(bool is_async) {
LocalVariable* temp = new(Z) LocalVariable(
function_.token_pos(),
String::ZoneHandle(Z, Symbols::New(":finally_ret_val")),
- Type::ZoneHandle(Z, Type::DynamicType()));
+ Object::dynamic_type());
ASSERT(temp != NULL);
temp->set_is_final();
if (is_async) {
@@ -610,6 +610,7 @@ struct MemberDesc {
MemberDesc() {
Clear();
}
+
void Clear() {
has_abstract = false;
has_external = false;
@@ -631,6 +632,7 @@ struct MemberDesc {
kind = RawFunction::kRegularFunction;
field_ = NULL;
}
+
bool IsConstructor() const {
return (kind == RawFunction::kConstructor) && !has_static;
}
@@ -1358,7 +1360,7 @@ SequenceNode* Parser::ParseConstructorClosure(const Function& func) {
// argument.
params.AddFinalParameter(token_pos,
&Symbols::ClosureParameter(),
- &Type::ZoneHandle(Z, Type::DynamicType()));
+ &Object::dynamic_type());
bool params_ok = ParseFormalParameters(constructor, &params);
USE(params_ok);
ASSERT(params_ok);
@@ -1408,7 +1410,7 @@ SequenceNode* Parser::ParseImplicitClosure(const Function& func) {
params.AddFinalParameter(
token_pos,
&Symbols::ClosureParameter(),
- &Type::ZoneHandle(Type::DynamicType()));
+ &Object::dynamic_type());
const Function& parent = Function::ZoneHandle(func.parent_function());
if (parent.IsImplicitSetterFunction()) {
@@ -1506,7 +1508,7 @@ void Parser::BuildDispatcherScope(const Function& func,
char name[64];
OS::SNPrint(name, 64, ":p%" Pd, i);
p.name = &String::ZoneHandle(Z, Symbols::New(name));
- p.type = &Type::ZoneHandle(Z, Type::DynamicType());
+ p.type = &Object::dynamic_type();
params.parameters->Add(p);
params.num_fixed_parameters++;
}
@@ -1517,7 +1519,7 @@ void Parser::BuildDispatcherScope(const Function& func,
ParamDesc p;
intptr_t index = i - desc.PositionalCount();
p.name = &String::ZoneHandle(Z, desc.NameAt(index));
- p.type = &Type::ZoneHandle(Z, Type::DynamicType());
+ p.type = &Object::dynamic_type();
p.default_value = &Object::null_instance();
params.parameters->Add(p);
params.num_optional_parameters++;
@@ -1768,7 +1770,7 @@ void Parser::ParseFormalParameter(bool allow_explicit_default_value,
// The parameter type is the 'dynamic' type.
// If this is an initializing formal, its type will be set to the type of
// the respective field when the constructor is fully parsed.
- parameter.type = &Type::ZoneHandle(Z, Type::DynamicType());
+ parameter.type = &Object::dynamic_type();
}
if (CurrentToken() == Token::kTHIS) {
ConsumeToken();
@@ -1781,7 +1783,7 @@ void Parser::ParseFormalParameter(bool allow_explicit_default_value,
// This must later be changed to a closure type if we recognize
// a closure/function type parameter. We check this at the end
// of ParseFormalParameter.
- parameter.type = &Type::ZoneHandle(Z, Type::VoidType());
+ parameter.type = &Object::void_type();
}
if (parameter.type == NULL) {
// At this point, we must see an identifier for the type or the
@@ -1808,7 +1810,7 @@ void Parser::ParseFormalParameter(bool allow_explicit_default_value,
} else {
// If this is an initializing formal, its type will be set to the type of
// the respective field when the constructor is fully parsed.
- parameter.type = &Type::ZoneHandle(Z, Type::DynamicType());
+ parameter.type = &Object::dynamic_type();
}
}
if (!this_seen && (CurrentToken() == Token::kTHIS)) {
@@ -1857,7 +1859,7 @@ void Parser::ParseFormalParameter(bool allow_explicit_default_value,
func_params.AddFinalParameter(
TokenPos(),
&Symbols::ClosureParameter(),
- &Type::ZoneHandle(Z, Type::DynamicType()));
+ &Object::dynamic_type());
const bool no_explicit_default_values = false;
ParseFormalParameterList(no_explicit_default_values, false, &func_params);
@@ -2930,7 +2932,7 @@ SequenceNode* Parser::MakeImplicitConstructor(const Function& func) {
LocalVariable* param = new LocalVariable(
Scanner::kNoSourcePos,
String::ZoneHandle(Z, func.ParameterNameAt(i)),
- Type::ZoneHandle(Z, Type::DynamicType()));
+ Object::dynamic_type());
current_block_->scope->InsertParameterAt(i, param);
forwarding_args->Add(new LoadLocalNode(Scanner::kNoSourcePos, param));
}
@@ -3315,7 +3317,7 @@ SequenceNode* Parser::ParseFunc(const Function& func) {
params.AddFinalParameter(
TokenPos(),
&Symbols::ClosureParameter(),
- &Type::ZoneHandle(Z, Type::DynamicType()));
+ &Object::dynamic_type());
} else if (!func.is_static()) {
// Static functions do not have a receiver.
ASSERT(current_class().raw() == func.Owner());
@@ -3326,7 +3328,7 @@ SequenceNode* Parser::ParseFunc(const Function& func) {
params.AddFinalParameter(
TokenPos(),
&Symbols::TypeArgumentsParameter(),
- &Type::ZoneHandle(Z, Type::DynamicType()));
+ &Object::dynamic_type());
}
// Expect the parameter list unless this is a getter function, or the
// body closure of an async or generator getter function.
@@ -3689,7 +3691,7 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
method->params.AddFinalParameter(
formal_param_pos,
&Symbols::TypeArgumentsParameter(),
- &Type::ZoneHandle(Z, Type::DynamicType()));
+ &Object::dynamic_type());
}
// Constructors have an implicit parameter for the construction phase.
if (method->IsConstructor()) {
@@ -4156,7 +4158,7 @@ void Parser::ParseFieldDefinition(ClassDesc* members, MemberDesc* field) {
params.AddFinalParameter(TokenPos(),
&Symbols::Value(),
field->type);
- setter.set_result_type(Type::Handle(Z, Type::VoidType()));
+ setter.set_result_type(Object::void_type());
setter.set_is_debuggable(false);
if (library_.is_dart_scheme() && library_.IsPrivate(*field->name)) {
setter.set_is_reflectable(false);
@@ -4260,7 +4262,7 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
ConsumeToken();
member.has_var = true;
// The member type is the 'dynamic' type.
- member.type = &Type::ZoneHandle(Z, Type::DynamicType());
+ member.type = &Object::dynamic_type();
} else if (CurrentToken() == Token::kFACTORY) {
ConsumeToken();
if (member.has_static) {
@@ -4277,7 +4279,7 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
}
ConsumeToken();
ASSERT(member.type == NULL);
- member.type = &Type::ZoneHandle(Z, Type::VoidType());
+ member.type = &Object::void_type();
} else if (CurrentToken() == Token::kIDENT) {
// This is either a type name or the name of a method/constructor/field.
if ((member.type == NULL) && !member.has_factory) {
@@ -4372,7 +4374,7 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
// The grammar allows a return type, so member.type is not always NULL here.
// If no return type is specified, the return type of the setter is dynamic.
if (member.type == NULL) {
- member.type = &Type::ZoneHandle(Z, Type::DynamicType());
+ member.type = &Object::dynamic_type();
}
} else if ((CurrentToken() == Token::kOPERATOR) && !member.has_var &&
(LookaheadToken(1) != Token::kLPAREN) &&
@@ -4405,7 +4407,7 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
if (CurrentToken() == Token::kLPAREN || member.IsGetter()) {
// Constructor or method.
if (member.type == NULL) {
- member.type = &Type::ZoneHandle(Z, Type::DynamicType());
+ member.type = &Object::dynamic_type();
}
ASSERT(member.IsFactory() == member.has_factory);
ParseMethodOrConstructor(members, &member);
@@ -4419,7 +4421,7 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
}
if (member.type == NULL) {
if (member.has_final) {
- member.type = &Type::ZoneHandle(Z, Type::DynamicType());
+ member.type = &Object::dynamic_type();
} else {
ReportError("missing 'var', 'final', 'const' or type"
" in field declaration");
@@ -5146,7 +5148,7 @@ void Parser::ParseTypedef(const GrowableObjectArray& pending_classes,
func_params.AddFinalParameter(
TokenPos(),
&Symbols::ClosureParameter(),
- &Type::ZoneHandle(Z, Type::DynamicType()));
+ &Object::dynamic_type());
const bool no_explicit_default_values = false;
ParseFormalParameterList(no_explicit_default_values, false, &func_params);
@@ -6640,7 +6642,7 @@ RawFunction* Parser::OpenSyncGeneratorFunction(intptr_t func_pos) {
innermost_function(),
func_pos);
body.set_is_generated_body(true);
- body.set_result_type(AbstractType::Handle(Type::DynamicType()));
+ body.set_result_type(Object::dynamic_type());
is_new_closure = true;
}
@@ -6778,7 +6780,7 @@ RawFunction* Parser::OpenAsyncFunction(intptr_t async_func_pos) {
innermost_function(),
async_func_pos);
closure.set_is_generated_body(true);
- closure.set_result_type(AbstractType::Handle(Type::DynamicType()));
+ closure.set_result_type(Object::dynamic_type());
is_new_closure = true;
}
// Create the parameter list for the async body closure.
@@ -6912,7 +6914,7 @@ RawFunction* Parser::OpenAsyncGeneratorFunction(intptr_t async_func_pos) {
innermost_function(),
async_func_pos);
closure.set_is_generated_body(true);
- closure.set_result_type(AbstractType::Handle(Type::DynamicType()));
+ closure.set_result_type(Object::dynamic_type());
is_new_closure = true;
}
@@ -8694,7 +8696,7 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
TypeArguments::ZoneHandle(Z),
iterator_ctor,
ctor_args);
- const AbstractType& iterator_type = Type::ZoneHandle(Z, Type::DynamicType());
+ const AbstractType& iterator_type = Object::dynamic_type();
LocalVariable* iterator_var = new(Z) LocalVariable(
stream_expr_pos, Symbols::ForInIter(), iterator_type);
current_block_->scope->AddVariable(iterator_var);
@@ -8959,7 +8961,7 @@ AstNode* Parser::ParseForInStatement(intptr_t forin_pos,
// would refer to the compiler generated iterator and could confuse the user.
// It is better to leave the iterator untyped and postpone the type error
// until the loop variable is assigned to.
- const AbstractType& iterator_type = Type::ZoneHandle(Z, Type::DynamicType());
+ const AbstractType& iterator_type = Object::dynamic_type();
LocalVariable* iterator_var = new(Z) LocalVariable(
collection_pos, Symbols::ForInIter(), iterator_type);
current_block_->scope->AddVariable(iterator_var);
@@ -9388,7 +9390,7 @@ SequenceNode* Parser::ParseCatchClauses(
exception_param.type = &AbstractType::ZoneHandle(Z,
ParseType(ClassFinalizer::kCanonicalize));
} else {
- exception_param.type = &AbstractType::ZoneHandle(Z, Type::DynamicType());
+ exception_param.type = &Object::dynamic_type();
}
if (CurrentToken() == Token::kCATCH) {
ConsumeToken(); // Consume the 'catch'.
@@ -9397,8 +9399,7 @@ SequenceNode* Parser::ParseCatchClauses(
exception_param.name = ExpectIdentifier("identifier expected");
if (CurrentToken() == Token::kCOMMA) {
ConsumeToken();
- stack_trace_param.type =
- &AbstractType::ZoneHandle(Z, Type::DynamicType());
+ stack_trace_param.type = &Object::dynamic_type();
stack_trace_param.token_pos = TokenPos();
stack_trace_param.name = ExpectIdentifier("identifier expected");
}
@@ -9579,7 +9580,7 @@ void Parser::SetupSavedTryContext(LocalVariable* saved_try_context) {
LocalVariable* async_saved_try_ctx = new (Z) LocalVariable(
Scanner::kNoSourcePos,
async_saved_try_ctx_name,
- Type::ZoneHandle(Z, Type::DynamicType()));
+ Object::dynamic_type());
ASSERT(async_temp_scope_ != NULL);
async_temp_scope_->AddVariable(async_saved_try_ctx);
ASSERT(saved_try_context != NULL);
@@ -10543,7 +10544,7 @@ LocalVariable* Parser::CreateTempConstVariable(intptr_t token_pos,
LocalVariable* temp = new(Z) LocalVariable(
token_pos,
String::ZoneHandle(Z, Symbols::New(name)),
- Type::ZoneHandle(Z, Type::DynamicType()));
+ Object::dynamic_type());
temp->set_is_final();
current_block_->scope->AddVariable(temp);
return temp;
@@ -13178,7 +13179,7 @@ RawFunction* Parser::BuildConstructorClosureFunction(const Function& ctr,
ParamList params;
params.AddFinalParameter(token_pos,
&Symbols::ClosureParameter(),
- &Type::ZoneHandle(Z, Type::DynamicType()));
+ &Object::dynamic_type());
ParseFormalParameters(ctr, &params);
// Per language spec, the type of the closure parameters is dynamic.
@@ -13191,7 +13192,7 @@ RawFunction* Parser::BuildConstructorClosureFunction(const Function& ctr,
closure.set_is_generated_body(true);
closure.set_is_debuggable(false);
closure.set_is_visible(false);
- closure.set_result_type(AbstractType::Handle(Type::DynamicType()));
+ closure.set_result_type(Object::dynamic_type());
AddFormalParamsToFunction(&params, closure);
// Create and set the signature class of the closure.
« no previous file with comments | « runtime/vm/parser.h ('k') | runtime/vm/regexp.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698