Index: runtime/vm/flow_graph_builder.cc |
diff --git a/runtime/vm/flow_graph_builder.cc b/runtime/vm/flow_graph_builder.cc |
index 57b5d65d8585d844efb091f726dbeb02665a9579..fc3264f73803f73b2f0b5c582994155a13294668 100644 |
--- a/runtime/vm/flow_graph_builder.cc |
+++ b/runtime/vm/flow_graph_builder.cc |
@@ -1469,7 +1469,6 @@ void EffectGraphVisitor::VisitBinaryOpWithMask32Node( |
void EffectGraphVisitor::BuildTypecheckPushArguments( |
intptr_t token_pos, |
- PushArgumentInstr** push_instantiator_result, |
PushArgumentInstr** push_instantiator_type_arguments_result) { |
const Class& instantiator_class = Class::Handle( |
Z, owner()->function().Owner()); |
@@ -1479,15 +1478,11 @@ void EffectGraphVisitor::BuildTypecheckPushArguments( |
Value* instantiator = BuildInstantiator(instantiator_class); |
if (instantiator == NULL) { |
// No instantiator when inside factory. |
- *push_instantiator_result = PushArgument(BuildNullValue()); |
instantiator_type_arguments = |
BuildInstantiatorTypeArguments(token_pos, instantiator_class, NULL); |
} else { |
- instantiator = Bind(BuildStoreExprTemp(instantiator)); |
- *push_instantiator_result = PushArgument(instantiator); |
- Value* loaded = Bind(BuildLoadExprTemp()); |
- instantiator_type_arguments = |
- BuildInstantiatorTypeArguments(token_pos, instantiator_class, loaded); |
+ instantiator_type_arguments = BuildInstantiatorTypeArguments( |
+ token_pos, instantiator_class, instantiator); |
} |
*push_instantiator_type_arguments_result = |
PushArgument(instantiator_type_arguments); |
@@ -1497,7 +1492,6 @@ void EffectGraphVisitor::BuildTypecheckPushArguments( |
void EffectGraphVisitor::BuildTypecheckArguments( |
intptr_t token_pos, |
- Value** instantiator_result, |
Value** instantiator_type_arguments_result) { |
Value* instantiator = NULL; |
Value* instantiator_type_arguments = NULL; |
@@ -1508,17 +1502,12 @@ void EffectGraphVisitor::BuildTypecheckArguments( |
instantiator = BuildInstantiator(instantiator_class); |
if (instantiator == NULL) { |
// No instantiator when inside factory. |
- instantiator = BuildNullValue(); |
instantiator_type_arguments = |
BuildInstantiatorTypeArguments(token_pos, instantiator_class, NULL); |
} else { |
- // Preserve instantiator. |
- instantiator = Bind(BuildStoreExprTemp(instantiator)); |
- Value* loaded = Bind(BuildLoadExprTemp()); |
- instantiator_type_arguments = |
- BuildInstantiatorTypeArguments(token_pos, instantiator_class, loaded); |
+ instantiator_type_arguments = BuildInstantiatorTypeArguments( |
+ token_pos, instantiator_class, instantiator); |
} |
- *instantiator_result = instantiator; |
*instantiator_type_arguments_result = instantiator_type_arguments; |
} |
@@ -1535,21 +1524,16 @@ AssertAssignableInstr* EffectGraphVisitor::BuildAssertAssignable( |
const AbstractType& dst_type, |
const String& dst_name) { |
// Build the type check computation. |
- Value* instantiator = NULL; |
Value* instantiator_type_arguments = NULL; |
if (dst_type.IsInstantiated()) { |
- instantiator = BuildNullValue(); |
instantiator_type_arguments = BuildNullValue(); |
} else { |
- BuildTypecheckArguments(token_pos, |
- &instantiator, |
- &instantiator_type_arguments); |
+ BuildTypecheckArguments(token_pos, &instantiator_type_arguments); |
} |
const intptr_t deopt_id = Thread::Current()->GetNextDeoptId(); |
return new(Z) AssertAssignableInstr(token_pos, |
value, |
- instantiator, |
instantiator_type_arguments, |
dst_type, |
dst_name, |
@@ -1651,20 +1635,15 @@ void EffectGraphVisitor::BuildTypeTest(ComparisonNode* node) { |
} |
PushArgumentInstr* push_left = PushArgument(for_left_value.value()); |
- PushArgumentInstr* push_instantiator = NULL; |
PushArgumentInstr* push_type_args = NULL; |
if (type.IsInstantiated()) { |
- push_instantiator = PushArgument(BuildNullValue()); |
push_type_args = PushArgument(BuildNullValue()); |
} else { |
- BuildTypecheckPushArguments(node->token_pos(), |
- &push_instantiator, |
- &push_type_args); |
+ BuildTypecheckPushArguments(node->token_pos(), &push_type_args); |
} |
ZoneGrowableArray<PushArgumentInstr*>* arguments = |
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(5); |
+ new(Z) ZoneGrowableArray<PushArgumentInstr*>(4); |
arguments->Add(push_left); |
- arguments->Add(push_instantiator); |
arguments->Add(push_type_args); |
ASSERT(!node->right()->AsTypeNode()->type().IsNull()); |
Value* type_const = Bind(new(Z) ConstantInstr(type)); |
@@ -1708,20 +1687,15 @@ void EffectGraphVisitor::BuildTypeCast(ComparisonNode* node) { |
} |
} |
PushArgumentInstr* push_left = PushArgument(for_value.value()); |
- PushArgumentInstr* push_instantiator = NULL; |
PushArgumentInstr* push_type_args = NULL; |
if (type.IsInstantiated()) { |
- push_instantiator = PushArgument(BuildNullValue()); |
push_type_args = PushArgument(BuildNullValue()); |
} else { |
- BuildTypecheckPushArguments(node->token_pos(), |
- &push_instantiator, |
- &push_type_args); |
+ BuildTypecheckPushArguments(node->token_pos(), &push_type_args); |
} |
ZoneGrowableArray<PushArgumentInstr*>* arguments = |
- new(Z) ZoneGrowableArray<PushArgumentInstr*>(4); |
+ new(Z) ZoneGrowableArray<PushArgumentInstr*>(3); |
arguments->Add(push_left); |
- arguments->Add(push_instantiator); |
arguments->Add(push_type_args); |
Value* type_arg = Bind(new(Z) ConstantInstr(type)); |
arguments->Add(PushArgument(type_arg)); |
@@ -1749,10 +1723,10 @@ StrictCompareInstr* EffectGraphVisitor::BuildStrictCompare(AstNode* left, |
right->Visit(&for_right_value); |
Append(for_right_value); |
StrictCompareInstr* comp = new(Z) StrictCompareInstr(token_pos, |
- kind, |
- for_left_value.value(), |
- for_right_value.value(), |
- true); // Number check. |
+ kind, |
+ for_left_value.value(), |
+ for_right_value.value(), |
+ true); // Number check. |
return comp; |
} |