| 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 #include "vm/growable_array.h" | 8 #include "vm/growable_array.h" |
| 9 #include "vm/hash_map.h" | 9 #include "vm/hash_map.h" |
| 10 | 10 |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 zone_(helper->zone()), | 289 zone_(helper->zone()), |
| 290 result_(AbstractType::Handle(helper->zone())), | 290 result_(AbstractType::Handle(helper->zone())), |
| 291 finalize_(finalize) {} | 291 finalize_(finalize) {} |
| 292 | 292 |
| 293 // Can return a malformed type. | 293 // Can return a malformed type. |
| 294 AbstractType& TranslateType(DartType* node); | 294 AbstractType& TranslateType(DartType* node); |
| 295 | 295 |
| 296 // Can return a malformed type. | 296 // Can return a malformed type. |
| 297 AbstractType& TranslateTypeWithoutFinalization(DartType* node); | 297 AbstractType& TranslateTypeWithoutFinalization(DartType* node); |
| 298 | 298 |
| 299 // Is guaranteed to be not malformed. |
| 300 const AbstractType& TranslateVariableType(VariableDeclaration* variable); |
| 301 |
| 299 | 302 |
| 300 virtual void VisitDefaultDartType(DartType* node) { UNREACHABLE(); } | 303 virtual void VisitDefaultDartType(DartType* node) { UNREACHABLE(); } |
| 301 | 304 |
| 302 virtual void VisitInvalidType(InvalidType* node); | 305 virtual void VisitInvalidType(InvalidType* node); |
| 303 | 306 |
| 304 virtual void VisitFunctionType(FunctionType* node); | 307 virtual void VisitFunctionType(FunctionType* node); |
| 305 | 308 |
| 306 virtual void VisitTypeParameterType(TypeParameterType* node); | 309 virtual void VisitTypeParameterType(TypeParameterType* node); |
| 307 | 310 |
| 308 virtual void VisitInterfaceType(InterfaceType* node); | 311 virtual void VisitInterfaceType(InterfaceType* node); |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 | 490 |
| 488 | 491 |
| 489 class ScopeBuilder : public RecursiveVisitor { | 492 class ScopeBuilder : public RecursiveVisitor { |
| 490 public: | 493 public: |
| 491 ScopeBuilder(ParsedFunction* parsed_function, TreeNode* node) | 494 ScopeBuilder(ParsedFunction* parsed_function, TreeNode* node) |
| 492 : result_(NULL), | 495 : result_(NULL), |
| 493 parsed_function_(parsed_function), | 496 parsed_function_(parsed_function), |
| 494 node_(node), | 497 node_(node), |
| 495 zone_(Thread::Current()->zone()), | 498 zone_(Thread::Current()->zone()), |
| 496 translation_helper_(Thread::Current(), zone_, Isolate::Current()), | 499 translation_helper_(Thread::Current(), zone_, Isolate::Current()), |
| 500 type_translator_(&translation_helper_, &active_class_), |
| 497 current_function_scope_(NULL), | 501 current_function_scope_(NULL), |
| 498 scope_(NULL), | 502 scope_(NULL), |
| 499 depth_(0), | 503 depth_(0), |
| 500 name_index_(0) {} | 504 name_index_(0) {} |
| 501 | 505 |
| 502 virtual ~ScopeBuilder() {} | 506 virtual ~ScopeBuilder() {} |
| 503 | 507 |
| 504 ScopeBuildingResult* BuildScopes(); | 508 ScopeBuildingResult* BuildScopes(); |
| 505 | 509 |
| 506 virtual void VisitName(Name* node) { /* NOP */ | 510 virtual void VisitName(Name* node) { /* NOP */ |
| (...skipping 20 matching lines...) Expand all Loading... |
| 527 virtual void VisitAssertStatement(AssertStatement* node); | 531 virtual void VisitAssertStatement(AssertStatement* node); |
| 528 | 532 |
| 529 virtual void VisitFunctionNode(FunctionNode* node); | 533 virtual void VisitFunctionNode(FunctionNode* node); |
| 530 | 534 |
| 531 virtual void VisitConstructor(Constructor* node); | 535 virtual void VisitConstructor(Constructor* node); |
| 532 | 536 |
| 533 private: | 537 private: |
| 534 void EnterScope(TreeNode* node); | 538 void EnterScope(TreeNode* node); |
| 535 void ExitScope(); | 539 void ExitScope(); |
| 536 | 540 |
| 537 LocalVariable* MakeVariable(const dart::String& name); | 541 const Type& TranslateVariableType(VariableDeclaration* variable); |
| 538 LocalVariable* MakeVariable(const dart::String& name, const Type& type); | 542 LocalVariable* MakeVariable(const dart::String& name, |
| 543 const AbstractType& type); |
| 539 | 544 |
| 540 void AddParameters(FunctionNode* function, intptr_t pos = 0); | 545 void AddParameters(FunctionNode* function, intptr_t pos = 0); |
| 541 void AddParameter(VariableDeclaration* declaration, intptr_t pos); | 546 void AddParameter(VariableDeclaration* declaration, intptr_t pos); |
| 542 void AddVariable(VariableDeclaration* declaration); | 547 void AddVariable(VariableDeclaration* declaration); |
| 543 void AddExceptionVariable(GrowableArray<LocalVariable*>* variables, | 548 void AddExceptionVariable(GrowableArray<LocalVariable*>* variables, |
| 544 const char* prefix, intptr_t nesting_depth); | 549 const char* prefix, intptr_t nesting_depth); |
| 545 void AddTryVariables(); | 550 void AddTryVariables(); |
| 546 void AddCatchVariables(); | 551 void AddCatchVariables(); |
| 547 void AddIteratorVariable(); | 552 void AddIteratorVariable(); |
| 548 void AddSwitchVariable(); | 553 void AddSwitchVariable(); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 574 intptr_t try_; | 579 intptr_t try_; |
| 575 intptr_t catch_; | 580 intptr_t catch_; |
| 576 intptr_t finally_; | 581 intptr_t finally_; |
| 577 intptr_t for_in_; | 582 intptr_t for_in_; |
| 578 }; | 583 }; |
| 579 | 584 |
| 580 ScopeBuildingResult* result_; | 585 ScopeBuildingResult* result_; |
| 581 ParsedFunction* parsed_function_; | 586 ParsedFunction* parsed_function_; |
| 582 TreeNode* node_; | 587 TreeNode* node_; |
| 583 | 588 |
| 589 ActiveClass active_class_; |
| 590 |
| 584 Zone* zone_; | 591 Zone* zone_; |
| 585 TranslationHelper translation_helper_; | 592 TranslationHelper translation_helper_; |
| 586 | 593 DartTypeTranslator type_translator_; |
| 587 | 594 |
| 588 FunctionNode* current_function_node_; | 595 FunctionNode* current_function_node_; |
| 589 LocalScope* current_function_scope_; | 596 LocalScope* current_function_scope_; |
| 590 LocalScope* scope_; | 597 LocalScope* scope_; |
| 591 DepthState depth_; | 598 DepthState depth_; |
| 592 | 599 |
| 593 intptr_t name_index_; | 600 intptr_t name_index_; |
| 594 }; | 601 }; |
| 595 | 602 |
| 596 | 603 |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 892 friend class SwitchBlock; | 899 friend class SwitchBlock; |
| 893 friend class TryCatchBlock; | 900 friend class TryCatchBlock; |
| 894 friend class TryFinallyBlock; | 901 friend class TryFinallyBlock; |
| 895 }; | 902 }; |
| 896 | 903 |
| 897 } // namespace kernel | 904 } // namespace kernel |
| 898 } // namespace dart | 905 } // namespace dart |
| 899 | 906 |
| 900 | 907 |
| 901 #endif // RUNTIME_VM_KERNEL_TO_IL_H_ | 908 #endif // RUNTIME_VM_KERNEL_TO_IL_H_ |
| OLD | NEW |