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 #ifndef VM_FLOW_GRAPH_BUILDER_H_ | 5 #ifndef VM_FLOW_GRAPH_BUILDER_H_ |
6 #define VM_FLOW_GRAPH_BUILDER_H_ | 6 #define VM_FLOW_GRAPH_BUILDER_H_ |
7 | 7 |
8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
9 #include "platform/globals.h" | 9 #include "platform/globals.h" |
10 #include "vm/allocation.h" | 10 #include "vm/allocation.h" |
11 #include "vm/ast.h" | 11 #include "vm/ast.h" |
12 #include "vm/growable_array.h" | 12 #include "vm/growable_array.h" |
13 #include "vm/intermediate_language.h" | 13 #include "vm/intermediate_language.h" |
14 #include "vm/raw_object.h" | 14 #include "vm/raw_object.h" |
15 | 15 |
16 namespace dart { | 16 namespace dart { |
17 | 17 |
18 class AbstractType; | 18 class AbstractType; |
19 class AbstractTypeArguments; | |
20 class Array; | 19 class Array; |
21 class Class; | 20 class Class; |
22 class Field; | 21 class Field; |
23 class FlowGraph; | 22 class FlowGraph; |
24 class LocalVariable; | 23 class LocalVariable; |
25 class ParsedFunction; | 24 class ParsedFunction; |
26 class String; | 25 class String; |
| 26 class TypeArguments; |
27 | 27 |
28 class NestedStatement; | 28 class NestedStatement; |
29 class TestGraphVisitor; | 29 class TestGraphVisitor; |
30 | 30 |
31 // List of recognized list factories: | 31 // List of recognized list factories: |
32 // (factory-name-symbol, result-cid, fingerprint). | 32 // (factory-name-symbol, result-cid, fingerprint). |
33 // TODO(srdjan): Store the values in the snapshot instead. | 33 // TODO(srdjan): Store the values in the snapshot instead. |
34 #define RECOGNIZED_LIST_FACTORY_LIST(V) \ | 34 #define RECOGNIZED_LIST_FACTORY_LIST(V) \ |
35 V(_ListFactory, kArrayCid, 176587978) \ | 35 V(_ListFactory, kArrayCid, 176587978) \ |
36 V(_GrowableListWithData, kGrowableObjectArrayCid, 264792196) \ | 36 V(_GrowableListWithData, kGrowableObjectArrayCid, 264792196) \ |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 | 327 |
328 // Helpers for translating parts of the AST. | 328 // Helpers for translating parts of the AST. |
329 void BuildPushArguments(const ArgumentListNode& node, | 329 void BuildPushArguments(const ArgumentListNode& node, |
330 ZoneGrowableArray<PushArgumentInstr*>* values); | 330 ZoneGrowableArray<PushArgumentInstr*>* values); |
331 | 331 |
332 // Creates an instantiated type argument vector used in preparation of an | 332 // Creates an instantiated type argument vector used in preparation of an |
333 // allocation call. | 333 // allocation call. |
334 // May be called only if allocating an object of a parameterized class. | 334 // May be called only if allocating an object of a parameterized class. |
335 Value* BuildInstantiatedTypeArguments( | 335 Value* BuildInstantiatedTypeArguments( |
336 intptr_t token_pos, | 336 intptr_t token_pos, |
337 const AbstractTypeArguments& type_arguments); | 337 const TypeArguments& type_arguments); |
338 | 338 |
339 // Creates a possibly uninstantiated type argument vector and the type | 339 // Creates a possibly uninstantiated type argument vector and the type |
340 // argument vector of the instantiator used in | 340 // argument vector of the instantiator used in |
341 // preparation of a constructor call. | 341 // preparation of a constructor call. |
342 // May be called only if allocating an object of a parameterized class. | 342 // May be called only if allocating an object of a parameterized class. |
343 void BuildConstructorTypeArguments( | 343 void BuildConstructorTypeArguments( |
344 ConstructorCallNode* node, | 344 ConstructorCallNode* node, |
345 ZoneGrowableArray<PushArgumentInstr*>* call_arguments); | 345 ZoneGrowableArray<PushArgumentInstr*>* call_arguments); |
346 | 346 |
347 void BuildTypecheckPushArguments( | 347 void BuildTypecheckPushArguments( |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
568 // Output parameters. | 568 // Output parameters. |
569 GrowableArray<TargetEntryInstr**> true_successor_addresses_; | 569 GrowableArray<TargetEntryInstr**> true_successor_addresses_; |
570 GrowableArray<TargetEntryInstr**> false_successor_addresses_; | 570 GrowableArray<TargetEntryInstr**> false_successor_addresses_; |
571 | 571 |
572 intptr_t condition_token_pos_; | 572 intptr_t condition_token_pos_; |
573 }; | 573 }; |
574 | 574 |
575 } // namespace dart | 575 } // namespace dart |
576 | 576 |
577 #endif // VM_FLOW_GRAPH_BUILDER_H_ | 577 #endif // VM_FLOW_GRAPH_BUILDER_H_ |
OLD | NEW |