Index: runtime/vm/flow_graph_builder.cc |
=================================================================== |
--- runtime/vm/flow_graph_builder.cc (revision 32158) |
+++ runtime/vm/flow_graph_builder.cc (working copy) |
@@ -2173,14 +2173,15 @@ |
AbstractTypeArguments::ZoneHandle(node->type().arguments()); |
Value* element_type = BuildInstantiatedTypeArguments(node->token_pos(), |
type_args); |
+ Value* num_elements = |
+ Bind(new ConstantInstr(Smi::ZoneHandle(Smi::New(node->length())))); |
CreateArrayInstr* create = new CreateArrayInstr(node->token_pos(), |
- node->length(), |
- node->type(), |
- element_type); |
+ element_type, |
+ num_elements); |
Value* array_val = Bind(create); |
{ LocalVariable* tmp_var = EnterTempLocalScope(array_val); |
- const intptr_t class_id = create->Type()->ToCid(); |
+ const intptr_t class_id = kArrayCid; |
const intptr_t deopt_id = Isolate::kNoDeoptId; |
for (int i = 0; i < node->length(); ++i) { |
Value* array = Bind(new LoadLocalInstr(*tmp_var)); |
@@ -2553,32 +2554,6 @@ |
} |
-// Class that recognizes factories and returns corresponding result cid. |
-class FactoryRecognizer : public AllStatic { |
- public: |
- // Return kDynamicCid if factory is not recognized. |
- static intptr_t ResultCid(const Function& factory) { |
- ASSERT(factory.IsFactory()); |
- const Class& function_class = Class::Handle(factory.Owner()); |
- const Library& lib = Library::Handle(function_class.library()); |
- ASSERT((lib.raw() == Library::CoreLibrary()) || |
- (lib.raw() == Library::TypedDataLibrary())); |
- const String& factory_name = String::Handle(factory.name()); |
-#define RECOGNIZE_FACTORY(test_factory_symbol, cid, fp) \ |
- if (String::EqualsIgnoringPrivateKey( \ |
- factory_name, Symbols::test_factory_symbol())) { \ |
- ASSERT(factory.CheckSourceFingerprint(fp)); \ |
- return cid; \ |
- } \ |
- |
-RECOGNIZED_LIST_FACTORY_LIST(RECOGNIZE_FACTORY); |
-#undef RECOGNIZE_FACTORY |
- |
- return kDynamicCid; |
- } |
-}; |
- |
- |
static intptr_t GetResultCidOfListFactory(ConstructorCallNode* node) { |
const Function& function = node->constructor(); |
const Class& function_class = Class::Handle(function.Owner()); |