Index: runtime/vm/flow_graph_builder.cc |
diff --git a/runtime/vm/flow_graph_builder.cc b/runtime/vm/flow_graph_builder.cc |
index 39f41b7e8834de6e1a063b959a194f268629f61b..98c184685cd5564ce476ff84af2a2e9bc66bb1ff 100644 |
--- a/runtime/vm/flow_graph_builder.cc |
+++ b/runtime/vm/flow_graph_builder.cc |
@@ -2612,40 +2612,27 @@ void EffectGraphVisitor::VisitInstanceCallNode(InstanceCallNode* node) { |
} |
-static intptr_t GetResultCidOfNativeFactory(const Function& function) { |
+static bool IsNativeListFactory(const Function& function) { |
switch (function.recognized_kind()) { |
case MethodRecognizer::kTypedData_Int8Array_factory: |
- return kTypedDataInt8ArrayCid; |
case MethodRecognizer::kTypedData_Uint8Array_factory: |
- return kTypedDataUint8ArrayCid; |
case MethodRecognizer::kTypedData_Uint8ClampedArray_factory: |
- return kTypedDataUint8ClampedArrayCid; |
case MethodRecognizer::kTypedData_Int16Array_factory: |
- return kTypedDataInt16ArrayCid; |
case MethodRecognizer::kTypedData_Uint16Array_factory: |
- return kTypedDataUint16ArrayCid; |
case MethodRecognizer::kTypedData_Int32Array_factory: |
- return kTypedDataInt32ArrayCid; |
case MethodRecognizer::kTypedData_Uint32Array_factory: |
- return kTypedDataUint32ArrayCid; |
case MethodRecognizer::kTypedData_Int64Array_factory: |
- return kTypedDataInt64ArrayCid; |
case MethodRecognizer::kTypedData_Uint64Array_factory: |
- return kTypedDataUint64ArrayCid; |
case MethodRecognizer::kTypedData_Float32Array_factory: |
- return kTypedDataFloat32ArrayCid; |
case MethodRecognizer::kTypedData_Float64Array_factory: |
- return kTypedDataFloat64ArrayCid; |
case MethodRecognizer::kTypedData_Float32x4Array_factory: |
- return kTypedDataFloat32x4ArrayCid; |
case MethodRecognizer::kTypedData_Int32x4Array_factory: |
- return kTypedDataInt32x4ArrayCid; |
case MethodRecognizer::kTypedData_Float64x2Array_factory: |
- return kTypedDataFloat64x2ArrayCid; |
+ return true; |
default: |
break; |
} |
- return kDynamicCid; |
+ return false; |
} |
@@ -2661,12 +2648,11 @@ void EffectGraphVisitor::VisitStaticCallNode(StaticCallNode* node) { |
node->arguments()->names(), |
arguments, |
owner()->ic_data_array()); |
- if (node->function().is_native()) { |
- const intptr_t result_cid = GetResultCidOfNativeFactory(node->function()); |
- if (result_cid != kDynamicCid) { |
- call->set_result_cid(result_cid); |
- call->set_is_native_list_factory(true); |
- } |
+ if (node->function().is_native() && IsNativeListFactory(node->function())) { |
+ call->set_is_native_list_factory(true); |
+ } |
+ if (node->function().recognized_kind() != MethodRecognizer::kUnknown) { |
+ call->set_result_cid(MethodRecognizer::ResultCid(node->function())); |
} |
ReturnDefinition(call); |
} |