Index: runtime/vm/flow_graph_builder.cc |
diff --git a/runtime/vm/flow_graph_builder.cc b/runtime/vm/flow_graph_builder.cc |
index f05160f51c63daadd0b45523bb962e5ce5ad965e..1f42817473f0db4ba188c3081568558ecb48d9d3 100644 |
--- a/runtime/vm/flow_graph_builder.cc |
+++ b/runtime/vm/flow_graph_builder.cc |
@@ -45,6 +45,9 @@ DECLARE_FLAG(bool, support_externalizable_strings); |
// Quick access to the locally defined zone() method. |
#define Z (zone()) |
+// Quick access to the locally defined thread() method. |
+#define T (thread()) |
+ |
// Quick synthetic token position. |
#define ST(token_pos) ((token_pos).ToSynthetic()) |
@@ -1392,7 +1395,7 @@ void EffectGraphVisitor::VisitBinaryOpNode(BinaryOpNode* node) { |
new(Z) ZoneGrowableArray<PushArgumentInstr*>(2); |
arguments->Add(push_left); |
arguments->Add(push_right); |
- const String& name = String::ZoneHandle(Z, Symbols::New(node->TokenName())); |
+ const String& name = Symbols::Token(node->kind()); |
const intptr_t kNumArgsChecked = 2; |
InstanceCallInstr* call = new(Z) InstanceCallInstr(node->token_pos(), |
name, |
@@ -1828,7 +1831,7 @@ void EffectGraphVisitor::VisitComparisonNode(ComparisonNode* node) { |
ASSERT(Token::IsRelationalOperator(node->kind())); |
InstanceCallInstr* comp = new(Z) InstanceCallInstr( |
node->token_pos(), |
- String::ZoneHandle(Z, Symbols::New(node->TokenName())), |
+ Symbols::Token(node->kind()), |
node->kind(), |
arguments, |
Object::null_array(), |
@@ -1864,7 +1867,7 @@ void EffectGraphVisitor::VisitUnaryOpNode(UnaryOpNode* node) { |
arguments->Add(push_value); |
InstanceCallInstr* call = new(Z) InstanceCallInstr( |
node->token_pos(), |
- String::ZoneHandle(Z, Symbols::New(node->TokenName())), |
+ Symbols::Token(node->kind()), |
node->kind(), |
arguments, |
Object::null_array(), |
@@ -2301,7 +2304,7 @@ LocalVariable* EffectGraphVisitor::EnterTempLocalScope( |
OS::SNPrint(name, 64, ":tmp_local%" Pd, index); |
LocalVariable* var = |
new(Z) LocalVariable(TokenPosition::kNoSource, |
- String::ZoneHandle(Z, Symbols::New(name)), |
+ String::ZoneHandle(Z, Symbols::New(T, name)), |
*value->Type()->ToAbstractType()); |
var->set_index(index); |
return var; |
@@ -3226,7 +3229,8 @@ void EffectGraphVisitor::VisitStaticGetterNode(StaticGetterNode* node) { |
if (node->is_super_getter()) { |
// Statically resolved instance getter, i.e. "super getter". |
ASSERT(node->receiver() != NULL); |
- getter_function = Resolver::ResolveDynamicAnyArgs(node->cls(), getter_name); |
+ getter_function = Resolver::ResolveDynamicAnyArgs(Z, |
+ node->cls(), getter_name); |
if (getter_function.IsNull()) { |
// Resolve and call noSuchMethod. |
ArgumentListNode* arguments = new(Z) ArgumentListNode(node->token_pos()); |
@@ -3794,9 +3798,8 @@ void EffectGraphVisitor::VisitLoadIndexedNode(LoadIndexedNode* node) { |
Function* super_function = NULL; |
if (node->IsSuperLoad()) { |
// Resolve the load indexed operator in the super class. |
- super_function = &Function::ZoneHandle( |
- Z, Resolver::ResolveDynamicAnyArgs(node->super_class(), |
- Symbols::IndexToken())); |
+ super_function = &Function::ZoneHandle(Z, Resolver::ResolveDynamicAnyArgs(Z, |
+ node->super_class(), Symbols::IndexToken())); |
if (super_function->IsNull()) { |
// Could not resolve super operator. Generate call noSuchMethod() of the |
// super class instead. |
@@ -3857,9 +3860,8 @@ Definition* EffectGraphVisitor::BuildStoreIndexedValues( |
const TokenPosition token_pos = node->token_pos(); |
if (node->IsSuperStore()) { |
// Resolve the store indexed operator in the super class. |
- super_function = &Function::ZoneHandle( |
- Z, Resolver::ResolveDynamicAnyArgs(node->super_class(), |
- Symbols::AssignIndexToken())); |
+ super_function = &Function::ZoneHandle(Z, Resolver::ResolveDynamicAnyArgs(Z, |
+ node->super_class(), Symbols::AssignIndexToken())); |
if (super_function->IsNull()) { |
// Could not resolve super operator. Generate call noSuchMethod() of the |
// super class instead. |
@@ -3925,11 +3927,9 @@ Definition* EffectGraphVisitor::BuildStoreIndexedValues( |
} else { |
// Generate dynamic call to operator []=. |
const intptr_t checked_argument_count = 2; // Do not check for value type. |
- const String& name = |
- String::ZoneHandle(Z, Symbols::New(Token::Str(Token::kASSIGN_INDEX))); |
InstanceCallInstr* store = |
new(Z) InstanceCallInstr(token_pos, |
- name, |
+ Symbols::AssignIndexToken(), |
Token::kASSIGN_INDEX, |
arguments, |
Object::null_array(), |
@@ -4474,7 +4474,7 @@ StaticCallInstr* EffectGraphVisitor::BuildThrowNoSuchMethodError( |
arguments->Add(PushArgument(receiver_value)); |
// String memberName. |
const String& member_name = |
- String::ZoneHandle(Z, Symbols::New(function_name)); |
+ String::ZoneHandle(Z, Symbols::New(T, function_name)); |
Value* member_name_value = Bind(new(Z) ConstantInstr(member_name)); |
arguments->Add(PushArgument(member_name_value)); |
// Smi invocation_type. |