| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/flow_graph_builder.h" | 5 #include "vm/flow_graph_builder.h" |
| 6 | 6 |
| 7 #include "lib/invocation_mirror.h" | 7 #include "lib/invocation_mirror.h" |
| 8 #include "vm/ast_printer.h" | 8 #include "vm/ast_printer.h" |
| 9 #include "vm/bit_vector.h" | 9 #include "vm/bit_vector.h" |
| 10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
| (...skipping 2788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2799 arguments, | 2799 arguments, |
| 2800 owner()->ic_data_array()); | 2800 owner()->ic_data_array()); |
| 2801 const intptr_t result_cid = GetResultCidOfListFactory(node); | 2801 const intptr_t result_cid = GetResultCidOfListFactory(node); |
| 2802 if (result_cid != kDynamicCid) { | 2802 if (result_cid != kDynamicCid) { |
| 2803 call->set_result_cid(result_cid); | 2803 call->set_result_cid(result_cid); |
| 2804 call->set_is_known_list_constructor(true); | 2804 call->set_is_known_list_constructor(true); |
| 2805 // Recognized fixed length array factory must have two arguments: | 2805 // Recognized fixed length array factory must have two arguments: |
| 2806 // (0) type-arguments, (1) length. | 2806 // (0) type-arguments, (1) length. |
| 2807 ASSERT(!LoadFieldInstr::IsFixedLengthArrayCid(result_cid) || | 2807 ASSERT(!LoadFieldInstr::IsFixedLengthArrayCid(result_cid) || |
| 2808 arguments->length() == 2); | 2808 arguments->length() == 2); |
| 2809 } else if (node->constructor().recognized_kind() != |
| 2810 MethodRecognizer::kUnknown) { |
| 2811 call->set_result_cid(MethodRecognizer::ResultCid(node->constructor())); |
| 2809 } | 2812 } |
| 2810 ReturnDefinition(call); | 2813 ReturnDefinition(call); |
| 2811 return; | 2814 return; |
| 2812 } | 2815 } |
| 2813 // t_n contains the allocated and initialized object. | 2816 // t_n contains the allocated and initialized object. |
| 2814 // t_n <- AllocateObject(class) | 2817 // t_n <- AllocateObject(class) |
| 2815 // t_n+1 <- ctor-arg | 2818 // t_n+1 <- ctor-arg |
| 2816 // t_n+2... <- constructor arguments start here | 2819 // t_n+2... <- constructor arguments start here |
| 2817 // StaticCall(constructor, t_n+1, t_n+2, ...) | 2820 // StaticCall(constructor, t_n+1, t_n+2, ...) |
| 2818 // No need to preserve allocated value (simpler than in ValueGraphVisitor). | 2821 // No need to preserve allocated value (simpler than in ValueGraphVisitor). |
| (...skipping 1759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4578 block_marks); | 4581 block_marks); |
| 4579 ASSERT(found); | 4582 ASSERT(found); |
| 4580 } | 4583 } |
| 4581 | 4584 |
| 4582 | 4585 |
| 4583 void FlowGraphBuilder::Bailout(const char* reason) const { | 4586 void FlowGraphBuilder::Bailout(const char* reason) const { |
| 4584 parsed_function_.Bailout("FlowGraphBuilder", reason); | 4587 parsed_function_.Bailout("FlowGraphBuilder", reason); |
| 4585 } | 4588 } |
| 4586 | 4589 |
| 4587 } // namespace dart | 4590 } // namespace dart |
| OLD | NEW |