| Index: runtime/vm/parser.cc
|
| diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
|
| index 61026895904277851e52ed1c743bd228732792d7..9bb2f68ba7e987c51e5a2f34a01979b47120cdd0 100644
|
| --- a/runtime/vm/parser.cc
|
| +++ b/runtime/vm/parser.cc
|
| @@ -558,10 +558,9 @@ struct ParamList {
|
| }
|
|
|
| void EraseParameterTypes() {
|
| - const Type& dynamic_type = Type::ZoneHandle(Type::DynamicType());
|
| const int num_parameters = parameters->length();
|
| for (int i = 0; i < num_parameters; i++) {
|
| - (*parameters)[i].type = &dynamic_type;
|
| + (*parameters)[i].type = &Object::dynamic_type();
|
| }
|
| }
|
|
|
| @@ -4721,7 +4720,6 @@ void Parser::ParseEnumDefinition(const Class& cls) {
|
| // Add instance field 'final int index'.
|
| Field& index_field = Field::ZoneHandle(Z);
|
| const Type& int_type = Type::Handle(Z, Type::IntType());
|
| - const Type& dynamic_type = Type::Handle(Type::DynamicType());
|
| index_field = Field::New(Symbols::Index(),
|
| false, // Not static.
|
| true, // Field is final.
|
| @@ -4748,7 +4746,7 @@ void Parser::ParseEnumDefinition(const Class& cls) {
|
| getter.set_result_type(int_type);
|
| getter.set_is_debuggable(false);
|
| ParamList params;
|
| - params.AddReceiver(&dynamic_type, cls.token_pos());
|
| + params.AddReceiver(&Object::dynamic_type(), cls.token_pos());
|
| AddFormalParamsToFunction(¶ms, getter);
|
| enum_members.AddFunction(getter);
|
|
|
| @@ -4801,7 +4799,7 @@ void Parser::ParseEnumDefinition(const Class& cls) {
|
| /* is_reflectable = */ true,
|
| cls,
|
| cls.token_pos());
|
| - enum_value.set_type(dynamic_type);
|
| + enum_value.set_type(Object::dynamic_type());
|
| enum_value.set_has_initializer(false);
|
| enum_members.AddField(enum_value);
|
| // Initialize the field with the ordinal value. It will be patched
|
| @@ -6237,15 +6235,13 @@ SequenceNode* Parser::CloseAsyncGeneratorTryBlock(SequenceNode *body) {
|
| OpenBlock(); // Catch block.
|
|
|
| // Add the exception and stack trace parameters to the scope.
|
| - const AbstractType& dynamic_type =
|
| - AbstractType::ZoneHandle(Z, Type::DynamicType());
|
| CatchParamDesc exception_param;
|
| CatchParamDesc stack_trace_param;
|
| exception_param.token_pos = Scanner::kNoSourcePos;
|
| - exception_param.type = &dynamic_type;
|
| + exception_param.type = &Object::dynamic_type();
|
| exception_param.name = &Symbols::ExceptionParameter();
|
| stack_trace_param.token_pos = Scanner::kNoSourcePos;
|
| - stack_trace_param.type = &dynamic_type;
|
| + stack_trace_param.type = &Object::dynamic_type();
|
| stack_trace_param.name = &Symbols::StackTraceParameter();
|
|
|
| AddCatchParamsToScope(
|
| @@ -6367,7 +6363,8 @@ SequenceNode* Parser::CloseAsyncGeneratorTryBlock(SequenceNode *body) {
|
|
|
| const GrowableObjectArray& handler_types =
|
| GrowableObjectArray::Handle(Z, GrowableObjectArray::New(Heap::kOld));
|
| - handler_types.Add(dynamic_type); // Catch block handles all exceptions.
|
| + // Catch block handles all exceptions.
|
| + handler_types.Add(Object::dynamic_type());
|
|
|
| CatchClauseNode* catch_clause = new(Z) CatchClauseNode(
|
| Scanner::kNoSourcePos,
|
| @@ -6406,15 +6403,13 @@ SequenceNode* Parser::CloseAsyncTryBlock(SequenceNode* try_block) {
|
|
|
| OpenBlock(); // Catch handler list.
|
| OpenBlock(); // Catch block.
|
| - const AbstractType& dynamic_type =
|
| - AbstractType::ZoneHandle(Z, Type::DynamicType());
|
| CatchParamDesc exception_param;
|
| CatchParamDesc stack_trace_param;
|
| exception_param.token_pos = Scanner::kNoSourcePos;
|
| - exception_param.type = &dynamic_type;
|
| + exception_param.type = &Object::dynamic_type();
|
| exception_param.name = &Symbols::ExceptionParameter();
|
| stack_trace_param.token_pos = Scanner::kNoSourcePos;
|
| - stack_trace_param.type = &dynamic_type;
|
| + stack_trace_param.type = &Object::dynamic_type();
|
| stack_trace_param.name = &Symbols::StackTraceParameter();
|
|
|
| AddCatchParamsToScope(
|
| @@ -6544,14 +6539,14 @@ void Parser::AddSyncGenClosureParameters(ParamList* params) {
|
| // Create the parameter list for the body closure of a sync generator:
|
| // 1) Implicit closure parameter;
|
| // 2) Iterator
|
| - const Type& dynamic_type = Type::ZoneHandle(Z, Type::DynamicType());
|
| // Add implicit closure parameter if not already present.
|
| if (params->parameters->length() == 0) {
|
| - params->AddFinalParameter(0, &Symbols::ClosureParameter(), &dynamic_type);
|
| + params->AddFinalParameter(
|
| + 0, &Symbols::ClosureParameter(), &Object::dynamic_type());
|
| }
|
| ParamDesc iterator_param;
|
| iterator_param.name = &Symbols::IteratorParameter();
|
| - iterator_param.type = &dynamic_type;
|
| + iterator_param.type = &Object::dynamic_type();
|
| params->parameters->Add(iterator_param);
|
| params->num_fixed_parameters++;
|
| }
|
| @@ -6679,26 +6674,26 @@ void Parser::AddAsyncClosureParameters(ParamList* params) {
|
| // * A continuation result.
|
| // * A continuation error.
|
| // * A continuation stack trace.
|
| - const Type& dynamic_type = Type::ZoneHandle(Z, Type::DynamicType());
|
| ASSERT(params->parameters->length() <= 1);
|
| // Add implicit closure parameter if not yet present.
|
| if (params->parameters->length() == 0) {
|
| - params->AddFinalParameter(0, &Symbols::ClosureParameter(), &dynamic_type);
|
| + params->AddFinalParameter(
|
| + 0, &Symbols::ClosureParameter(), &Object::dynamic_type());
|
| }
|
| ParamDesc result_param;
|
| result_param.name = &Symbols::AsyncOperationParam();
|
| result_param.default_value = &Object::null_instance();
|
| - result_param.type = &dynamic_type;
|
| + result_param.type = &Object::dynamic_type();
|
| params->parameters->Add(result_param);
|
| ParamDesc error_param;
|
| error_param.name = &Symbols::AsyncOperationErrorParam();
|
| error_param.default_value = &Object::null_instance();
|
| - error_param.type = &dynamic_type;
|
| + error_param.type = &Object::dynamic_type();
|
| params->parameters->Add(error_param);
|
| ParamDesc stack_trace_param;
|
| stack_trace_param.name = &Symbols::AsyncOperationStackTraceParam();
|
| stack_trace_param.default_value = &Object::null_instance();
|
| - stack_trace_param.type = &dynamic_type;
|
| + stack_trace_param.type = &Object::dynamic_type();
|
| params->parameters->Add(stack_trace_param);
|
| params->has_optional_positional_parameters = true;
|
| params->num_optional_parameters += 3;
|
| @@ -6772,12 +6767,13 @@ void Parser::AddContinuationVariables() {
|
| // Add to current block's scope:
|
| // var :await_jump_var;
|
| // var :await_ctx_var;
|
| - const Type& dynamic_type = Type::ZoneHandle(Z, Type::DynamicType());
|
| LocalVariable* await_jump_var = new (Z) LocalVariable(
|
| - Scanner::kNoSourcePos, Symbols::AwaitJumpVar(), dynamic_type);
|
| + Scanner::kNoSourcePos, Symbols::AwaitJumpVar(), Object::dynamic_type());
|
| current_block_->scope->AddVariable(await_jump_var);
|
| LocalVariable* await_ctx_var = new (Z) LocalVariable(
|
| - Scanner::kNoSourcePos, Symbols::AwaitContextVar(), dynamic_type);
|
| + Scanner::kNoSourcePos,
|
| + Symbols::AwaitContextVar(),
|
| + Object::dynamic_type());
|
| current_block_->scope->AddVariable(await_ctx_var);
|
| }
|
|
|
| @@ -6788,18 +6784,23 @@ void Parser::AddAsyncClosureVariables() {
|
| // var :async_then_callback;
|
| // var :async_catch_error_callback;
|
| // var :async_completer;
|
| - const Type& dynamic_type = Type::ZoneHandle(Z, Type::DynamicType());
|
| LocalVariable* async_op_var = new(Z) LocalVariable(
|
| - Scanner::kNoSourcePos, Symbols::AsyncOperation(), dynamic_type);
|
| + Scanner::kNoSourcePos, Symbols::AsyncOperation(), Object::dynamic_type());
|
| current_block_->scope->AddVariable(async_op_var);
|
| LocalVariable* async_then_callback_var = new(Z) LocalVariable(
|
| - Scanner::kNoSourcePos, Symbols::AsyncThenCallback(), dynamic_type);
|
| + Scanner::kNoSourcePos,
|
| + Symbols::AsyncThenCallback(),
|
| + Object::dynamic_type());
|
| current_block_->scope->AddVariable(async_then_callback_var);
|
| LocalVariable* async_catch_error_callback_var = new(Z) LocalVariable(
|
| - Scanner::kNoSourcePos, Symbols::AsyncCatchErrorCallback(), dynamic_type);
|
| + Scanner::kNoSourcePos,
|
| + Symbols::AsyncCatchErrorCallback(),
|
| + Object::dynamic_type());
|
| current_block_->scope->AddVariable(async_catch_error_callback_var);
|
| LocalVariable* async_completer = new(Z) LocalVariable(
|
| - Scanner::kNoSourcePos, Symbols::AsyncCompleter(), dynamic_type);
|
| + Scanner::kNoSourcePos,
|
| + Symbols::AsyncCompleter(),
|
| + Object::dynamic_type());
|
| current_block_->scope->AddVariable(async_completer);
|
| }
|
|
|
| @@ -6815,18 +6816,21 @@ void Parser::AddAsyncGeneratorVariables() {
|
| // var :async_catch_error_callback;
|
| // These variables are used to store the async generator closure containing
|
| // the body of the async* function. They are used by the await operator.
|
| - const Type& dynamic_type = Type::ZoneHandle(Z, Type::DynamicType());
|
| LocalVariable* controller_var = new(Z) LocalVariable(
|
| - Scanner::kNoSourcePos, Symbols::Controller(), dynamic_type);
|
| + Scanner::kNoSourcePos, Symbols::Controller(), Object::dynamic_type());
|
| current_block_->scope->AddVariable(controller_var);
|
| LocalVariable* async_op_var = new(Z) LocalVariable(
|
| - Scanner::kNoSourcePos, Symbols::AsyncOperation(), dynamic_type);
|
| + Scanner::kNoSourcePos, Symbols::AsyncOperation(), Object::dynamic_type());
|
| current_block_->scope->AddVariable(async_op_var);
|
| LocalVariable* async_then_callback_var = new(Z) LocalVariable(
|
| - Scanner::kNoSourcePos, Symbols::AsyncThenCallback(), dynamic_type);
|
| + Scanner::kNoSourcePos,
|
| + Symbols::AsyncThenCallback(),
|
| + Object::dynamic_type());
|
| current_block_->scope->AddVariable(async_then_callback_var);
|
| LocalVariable* async_catch_error_callback_var = new(Z) LocalVariable(
|
| - Scanner::kNoSourcePos, Symbols::AsyncCatchErrorCallback(), dynamic_type);
|
| + Scanner::kNoSourcePos,
|
| + Symbols::AsyncCatchErrorCallback(),
|
| + Object::dynamic_type());
|
| current_block_->scope->AddVariable(async_catch_error_callback_var);
|
| }
|
|
|
| @@ -8861,9 +8865,9 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
|
| // Create the try-statement and add to the current sequence, which is
|
| // the block around the loop statement.
|
|
|
| - const Type& dynamic_type = Type::ZoneHandle(Z, Type::DynamicType());
|
| const Array& handler_types = Array::ZoneHandle(Z, Array::New(1, Heap::kOld));
|
| - handler_types.SetAt(0, dynamic_type); // Catch block handles all exceptions.
|
| + // Catch block handles all exceptions.
|
| + handler_types.SetAt(0, Object::dynamic_type());
|
|
|
| CatchClauseNode* catch_clause = new(Z) CatchClauseNode(await_for_pos,
|
| catch_block,
|
| @@ -9584,14 +9588,13 @@ void Parser::SetupExceptionVariables(LocalScope* try_scope,
|
| LocalVariable** stack_trace_var,
|
| LocalVariable** saved_exception_var,
|
| LocalVariable** saved_stack_trace_var) {
|
| - const Type& dynamic_type = Type::ZoneHandle(Z, Type::DynamicType());
|
| // Consecutive try statements share the same set of variables.
|
| *context_var = try_scope->LocalLookupVariable(Symbols::SavedTryContextVar());
|
| if (*context_var == NULL) {
|
| *context_var = new(Z) LocalVariable(
|
| TokenPos(),
|
| Symbols::SavedTryContextVar(),
|
| - dynamic_type);
|
| + Object::dynamic_type());
|
| try_scope->AddVariable(*context_var);
|
| }
|
| *exception_var = try_scope->LocalLookupVariable(Symbols::ExceptionVar());
|
| @@ -9599,7 +9602,7 @@ void Parser::SetupExceptionVariables(LocalScope* try_scope,
|
| *exception_var = new(Z) LocalVariable(
|
| TokenPos(),
|
| Symbols::ExceptionVar(),
|
| - dynamic_type);
|
| + Object::dynamic_type());
|
| try_scope->AddVariable(*exception_var);
|
| }
|
| *stack_trace_var = try_scope->LocalLookupVariable(Symbols::StackTraceVar());
|
| @@ -9607,7 +9610,7 @@ void Parser::SetupExceptionVariables(LocalScope* try_scope,
|
| *stack_trace_var = new(Z) LocalVariable(
|
| TokenPos(),
|
| Symbols::StackTraceVar(),
|
| - dynamic_type);
|
| + Object::dynamic_type());
|
| try_scope->AddVariable(*stack_trace_var);
|
| }
|
| if (is_async) {
|
| @@ -9617,7 +9620,7 @@ void Parser::SetupExceptionVariables(LocalScope* try_scope,
|
| *saved_exception_var = new(Z) LocalVariable(
|
| TokenPos(),
|
| Symbols::SavedExceptionVar(),
|
| - dynamic_type);
|
| + Object::dynamic_type());
|
| try_scope->AddVariable(*saved_exception_var);
|
| }
|
| *saved_stack_trace_var = try_scope->LocalLookupVariable(
|
| @@ -9626,7 +9629,7 @@ void Parser::SetupExceptionVariables(LocalScope* try_scope,
|
| *saved_stack_trace_var = new(Z) LocalVariable(
|
| TokenPos(),
|
| Symbols::SavedStackTraceVar(),
|
| - dynamic_type);
|
| + Object::dynamic_type());
|
| try_scope->AddVariable(*saved_stack_trace_var);
|
| }
|
| }
|
|
|