OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 RUNTIME_VM_KERNEL_TO_IL_H_ | 5 #ifndef RUNTIME_VM_KERNEL_TO_IL_H_ |
6 #define RUNTIME_VM_KERNEL_TO_IL_H_ | 6 #define RUNTIME_VM_KERNEL_TO_IL_H_ |
7 | 7 |
8 #if !defined(DART_PRECOMPILED_RUNTIME) | 8 #if !defined(DART_PRECOMPILED_RUNTIME) |
9 | 9 |
10 #include "vm/growable_array.h" | 10 #include "vm/growable_array.h" |
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
633 parsed_function_(parsed_function), | 633 parsed_function_(parsed_function), |
634 node_(node), | 634 node_(node), |
635 translation_helper_(Thread::Current()), | 635 translation_helper_(Thread::Current()), |
636 zone_(translation_helper_.zone()), | 636 zone_(translation_helper_.zone()), |
637 type_translator_(&translation_helper_, | 637 type_translator_(&translation_helper_, |
638 &active_class_, | 638 &active_class_, |
639 /*finalize=*/true), | 639 /*finalize=*/true), |
640 current_function_scope_(NULL), | 640 current_function_scope_(NULL), |
641 scope_(NULL), | 641 scope_(NULL), |
642 depth_(0), | 642 depth_(0), |
643 name_index_(0) {} | 643 name_index_(0), |
| 644 needs_expr_temp_(false) {} |
644 | 645 |
645 virtual ~ScopeBuilder() {} | 646 virtual ~ScopeBuilder() {} |
646 | 647 |
647 ScopeBuildingResult* BuildScopes(); | 648 ScopeBuildingResult* BuildScopes(); |
648 | 649 |
649 virtual void VisitName(Name* node) { /* NOP */ | 650 virtual void VisitName(Name* node) { /* NOP */ |
650 } | 651 } |
651 | 652 |
652 virtual void VisitThisExpression(ThisExpression* node); | 653 virtual void VisitThisExpression(ThisExpression* node); |
653 virtual void VisitTypeParameterType(TypeParameterType* node); | 654 virtual void VisitTypeParameterType(TypeParameterType* node); |
654 virtual void VisitVariableGet(VariableGet* node); | 655 virtual void VisitVariableGet(VariableGet* node); |
655 virtual void VisitVariableSet(VariableSet* node); | 656 virtual void VisitVariableSet(VariableSet* node); |
| 657 virtual void VisitConditionalExpression(ConditionalExpression* node); |
| 658 virtual void VisitLogicalExpression(LogicalExpression* node); |
656 virtual void VisitFunctionExpression(FunctionExpression* node); | 659 virtual void VisitFunctionExpression(FunctionExpression* node); |
657 virtual void VisitLet(Let* node); | 660 virtual void VisitLet(Let* node); |
658 virtual void VisitBlock(Block* node); | 661 virtual void VisitBlock(Block* node); |
659 virtual void VisitVariableDeclaration(VariableDeclaration* node); | 662 virtual void VisitVariableDeclaration(VariableDeclaration* node); |
660 virtual void VisitFunctionDeclaration(FunctionDeclaration* node); | 663 virtual void VisitFunctionDeclaration(FunctionDeclaration* node); |
661 virtual void VisitWhileStatement(WhileStatement* node); | 664 virtual void VisitWhileStatement(WhileStatement* node); |
662 virtual void VisitDoStatement(DoStatement* node); | 665 virtual void VisitDoStatement(DoStatement* node); |
663 virtual void VisitForStatement(ForStatement* node); | 666 virtual void VisitForStatement(ForStatement* node); |
664 virtual void VisitForInStatement(ForInStatement* node); | 667 virtual void VisitForInStatement(ForInStatement* node); |
665 virtual void VisitSwitchStatement(SwitchStatement* node); | 668 virtual void VisitSwitchStatement(SwitchStatement* node); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
732 TranslationHelper translation_helper_; | 735 TranslationHelper translation_helper_; |
733 Zone* zone_; | 736 Zone* zone_; |
734 DartTypeTranslator type_translator_; | 737 DartTypeTranslator type_translator_; |
735 | 738 |
736 FunctionNode* current_function_node_; | 739 FunctionNode* current_function_node_; |
737 LocalScope* current_function_scope_; | 740 LocalScope* current_function_scope_; |
738 LocalScope* scope_; | 741 LocalScope* scope_; |
739 DepthState depth_; | 742 DepthState depth_; |
740 | 743 |
741 intptr_t name_index_; | 744 intptr_t name_index_; |
| 745 |
| 746 bool needs_expr_temp_; |
742 }; | 747 }; |
743 | 748 |
744 class FlowGraphBuilder : public ExpressionVisitor, public StatementVisitor { | 749 class FlowGraphBuilder : public ExpressionVisitor, public StatementVisitor { |
745 public: | 750 public: |
746 FlowGraphBuilder(TreeNode* node, | 751 FlowGraphBuilder(TreeNode* node, |
747 ParsedFunction* parsed_function, | 752 ParsedFunction* parsed_function, |
748 const ZoneGrowableArray<const ICData*>& ic_data_array, | 753 const ZoneGrowableArray<const ICData*>& ic_data_array, |
749 InlineExitCollector* exit_collector, | 754 InlineExitCollector* exit_collector, |
750 intptr_t osr_id, | 755 intptr_t osr_id, |
751 intptr_t first_block_id = 1); | 756 intptr_t first_block_id = 1); |
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1130 namespace kernel { | 1135 namespace kernel { |
1131 | 1136 |
1132 RawObject* EvaluateMetadata(TreeNode* const kernel_node); | 1137 RawObject* EvaluateMetadata(TreeNode* const kernel_node); |
1133 RawObject* BuildParameterDescriptor(TreeNode* const kernel_node); | 1138 RawObject* BuildParameterDescriptor(TreeNode* const kernel_node); |
1134 | 1139 |
1135 } // namespace kernel | 1140 } // namespace kernel |
1136 } // namespace dart | 1141 } // namespace dart |
1137 | 1142 |
1138 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 1143 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
1139 #endif // RUNTIME_VM_KERNEL_TO_IL_H_ | 1144 #endif // RUNTIME_VM_KERNEL_TO_IL_H_ |
OLD | NEW |