| Index: runtime/vm/parser.cc
|
| diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
|
| index 604e453cf044aeb41efcb2044b6fc9ad98a156d7..d9cd77847aeb13a5f08f7cc1297a0ab59309ab15 100644
|
| --- a/runtime/vm/parser.cc
|
| +++ b/runtime/vm/parser.cc
|
| @@ -1640,7 +1640,7 @@ SequenceNode* Parser::ParseInvokeFieldDispatcher(const Function& func) {
|
| function_object = receiver;
|
| } else {
|
| const String& getter_name = String::ZoneHandle(Z,
|
| - Symbols::New(String::Handle(Z, Field::GetterName(name))));
|
| + Symbols::New(String::Handle(Z, Field::GetterSymbol(name))));
|
| function_object = new(Z) InstanceCallNode(
|
| token_pos, receiver, getter_name, no_args);
|
| }
|
| @@ -2330,14 +2330,18 @@ AstNode* Parser::ParseSuperFieldAccess(const String& field_name,
|
| AstNode* implicit_argument = LoadReceiver(field_pos);
|
|
|
| const String& getter_name =
|
| - String::ZoneHandle(Z, Field::GetterName(field_name));
|
| - const Function& super_getter = Function::ZoneHandle(Z,
|
| - Resolver::ResolveDynamicAnyArgs(super_class, getter_name));
|
| + String::ZoneHandle(Z, Field::LookupGetterSymbol(field_name));
|
| + Function& super_getter = Function::ZoneHandle(Z);
|
| + if (!getter_name.IsNull()) {
|
| + super_getter = Resolver::ResolveDynamicAnyArgs(super_class, getter_name);
|
| + }
|
| if (super_getter.IsNull()) {
|
| const String& setter_name =
|
| - String::ZoneHandle(Z, Field::SetterName(field_name));
|
| - const Function& super_setter = Function::ZoneHandle(Z,
|
| - Resolver::ResolveDynamicAnyArgs(super_class, setter_name));
|
| + String::ZoneHandle(Z, Field::LookupSetterSymbol(field_name));
|
| + Function& super_setter = Function::ZoneHandle(Z);
|
| + if (!setter_name.IsNull()) {
|
| + super_setter = Resolver::ResolveDynamicAnyArgs(super_class, setter_name);
|
| + }
|
| if (super_setter.IsNull()) {
|
| // Check if this is an access to an implicit closure using 'super'.
|
| // If a function exists of the specified field_name then try
|
| @@ -6347,7 +6351,7 @@ SequenceNode* Parser::CloseAsyncGeneratorTryBlock(SequenceNode *body) {
|
| }
|
|
|
| const GrowableObjectArray& handler_types =
|
| - GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
|
| + GrowableObjectArray::Handle(Z, GrowableObjectArray::New(Heap::kOld));
|
| handler_types.Add(dynamic_type); // Catch block handles all exceptions.
|
|
|
| CatchClauseNode* catch_clause = new(Z) CatchClauseNode(
|
| @@ -6464,7 +6468,7 @@ SequenceNode* Parser::CloseAsyncTryBlock(SequenceNode* try_block) {
|
| SequenceNode* catch_handler_list = CloseBlock();
|
|
|
| const GrowableObjectArray& handler_types =
|
| - GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
|
| + GrowableObjectArray::Handle(Z, GrowableObjectArray::New(Heap::kOld));
|
| handler_types.SetLength(0);
|
| handler_types.Add(*exception_param.type);
|
|
|
| @@ -9670,7 +9674,7 @@ AstNode* Parser::ParseTryStatement(String* label_name) {
|
| try_stack_->enter_catch();
|
| const intptr_t handler_pos = TokenPos();
|
| const GrowableObjectArray& handler_types =
|
| - GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
|
| + GrowableObjectArray::Handle(Z, GrowableObjectArray::New(Heap::kOld));
|
| bool needs_stack_trace = false;
|
| SequenceNode* catch_handler_list =
|
| ParseCatchClauses(handler_pos,
|
| @@ -11161,7 +11165,8 @@ AstNode* Parser::GenerateStaticFieldLookup(const Field& field,
|
| ASSERT(field.is_static());
|
| const Class& field_owner = Class::ZoneHandle(Z, field.owner());
|
| const String& field_name = String::ZoneHandle(Z, field.name());
|
| - const String& getter_name = String::Handle(Z, Field::GetterName(field_name));
|
| + const String& getter_name =
|
| + String::Handle(Z, Field::GetterSymbol(field_name));
|
| const Function& getter = Function::Handle(Z,
|
| field_owner.LookupStaticFunction(getter_name));
|
| // Never load field directly if there is a getter (deterministic AST).
|
| @@ -11556,7 +11561,7 @@ AstNode* Parser::ParseClosurization(AstNode* primary) {
|
| is_setter_name = true;
|
| }
|
| } else if (Token::CanBeOverloaded(CurrentToken())) {
|
| - extractor_name = String::New(Token::Str(CurrentToken()));
|
| + extractor_name = Symbols::New(Token::Str(CurrentToken()));
|
| ConsumeToken();
|
| } else {
|
| ReportError("identifier or operator expected");
|
| @@ -11966,7 +11971,8 @@ StaticGetterNode* Parser::RunStaticFieldInitializer(const Field& field,
|
| ASSERT(field.is_static());
|
| const Class& field_owner = Class::ZoneHandle(Z, field.owner());
|
| const String& field_name = String::ZoneHandle(Z, field.name());
|
| - const String& getter_name = String::Handle(Z, Field::GetterName(field_name));
|
| + const String& getter_name =
|
| + String::Handle(Z, Field::GetterSymbol(field_name));
|
| const Function& getter = Function::Handle(Z,
|
| field_owner.LookupStaticFunction(getter_name));
|
| const Instance& value = Instance::Handle(Z, field.value());
|
|
|