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()); |