| 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_PARSER_H_ | 5 #ifndef VM_PARSER_H_ |
| 6 #define VM_PARSER_H_ | 6 #define VM_PARSER_H_ |
| 7 | 7 |
| 8 #include "include/dart_api.h" | 8 #include "include/dart_api.h" |
| 9 | 9 |
| 10 #include "platform/assert.h" | 10 #include "platform/assert.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 saved_entry_context_var_(NULL), | 48 saved_entry_context_var_(NULL), |
| 49 expression_temp_var_(NULL), | 49 expression_temp_var_(NULL), |
| 50 finally_return_temp_var_(NULL), | 50 finally_return_temp_var_(NULL), |
| 51 await_temps_scope_(NULL), | 51 await_temps_scope_(NULL), |
| 52 deferred_prefixes_(new ZoneGrowableArray<const LibraryPrefix*>()), | 52 deferred_prefixes_(new ZoneGrowableArray<const LibraryPrefix*>()), |
| 53 first_parameter_index_(0), | 53 first_parameter_index_(0), |
| 54 first_stack_local_index_(0), | 54 first_stack_local_index_(0), |
| 55 num_copied_params_(0), | 55 num_copied_params_(0), |
| 56 num_stack_locals_(0), | 56 num_stack_locals_(0), |
| 57 have_seen_await_expr_(false), | 57 have_seen_await_expr_(false), |
| 58 saved_try_ctx_(NULL), |
| 59 async_saved_try_ctx_(NULL), |
| 58 isolate_(isolate) { | 60 isolate_(isolate) { |
| 59 ASSERT(function.IsZoneHandle()); | 61 ASSERT(function.IsZoneHandle()); |
| 60 } | 62 } |
| 61 | 63 |
| 62 const Function& function() const { return function_; } | 64 const Function& function() const { return function_; } |
| 63 const Code& code() const { return code_; } | 65 const Code& code() const { return code_; } |
| 64 | 66 |
| 65 SequenceNode* node_sequence() const { return node_sequence_; } | 67 SequenceNode* node_sequence() const { return node_sequence_; } |
| 66 void SetNodeSequence(SequenceNode* node_sequence); | 68 void SetNodeSequence(SequenceNode* node_sequence); |
| 67 | 69 |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 ASSERT(await_temps_scope_ != NULL); | 150 ASSERT(await_temps_scope_ != NULL); |
| 149 return await_temps_scope_; | 151 return await_temps_scope_; |
| 150 } | 152 } |
| 151 | 153 |
| 152 void record_await() { | 154 void record_await() { |
| 153 have_seen_await_expr_ = true; | 155 have_seen_await_expr_ = true; |
| 154 } | 156 } |
| 155 void reset_have_seen_await() { have_seen_await_expr_ = false; } | 157 void reset_have_seen_await() { have_seen_await_expr_ = false; } |
| 156 bool have_seen_await() const { return have_seen_await_expr_; } | 158 bool have_seen_await() const { return have_seen_await_expr_; } |
| 157 | 159 |
| 160 void set_saved_try_ctx(LocalVariable* saved_try_ctx) { |
| 161 ASSERT((saved_try_ctx != NULL) && !saved_try_ctx->is_captured()); |
| 162 saved_try_ctx_ = saved_try_ctx; |
| 163 } |
| 164 LocalVariable* saved_try_ctx() const { return saved_try_ctx_; } |
| 165 |
| 166 void set_async_saved_try_ctx(LocalVariable* async_saved_try_ctx) { |
| 167 ASSERT((async_saved_try_ctx != NULL) && async_saved_try_ctx->is_captured()); |
| 168 async_saved_try_ctx_ = async_saved_try_ctx; |
| 169 } |
| 170 LocalVariable* async_saved_try_ctx() const { return async_saved_try_ctx_; } |
| 171 |
| 172 void reset_saved_try_ctx_vars() { |
| 173 saved_try_ctx_ = NULL; |
| 174 async_saved_try_ctx_ = NULL; |
| 175 } |
| 176 |
| 158 Isolate* isolate() const { return isolate_; } | 177 Isolate* isolate() const { return isolate_; } |
| 159 | 178 |
| 160 private: | 179 private: |
| 161 const Function& function_; | 180 const Function& function_; |
| 162 Code& code_; | 181 Code& code_; |
| 163 SequenceNode* node_sequence_; | 182 SequenceNode* node_sequence_; |
| 164 LocalVariable* instantiator_; | 183 LocalVariable* instantiator_; |
| 165 Array& default_parameter_values_; | 184 Array& default_parameter_values_; |
| 166 LocalVariable* saved_current_context_var_; | 185 LocalVariable* saved_current_context_var_; |
| 167 LocalVariable* saved_entry_context_var_; | 186 LocalVariable* saved_entry_context_var_; |
| 168 LocalVariable* expression_temp_var_; | 187 LocalVariable* expression_temp_var_; |
| 169 LocalVariable* finally_return_temp_var_; | 188 LocalVariable* finally_return_temp_var_; |
| 170 LocalScope* await_temps_scope_; | 189 LocalScope* await_temps_scope_; |
| 171 ZoneGrowableArray<const LibraryPrefix*>* deferred_prefixes_; | 190 ZoneGrowableArray<const LibraryPrefix*>* deferred_prefixes_; |
| 172 | 191 |
| 173 int first_parameter_index_; | 192 int first_parameter_index_; |
| 174 int first_stack_local_index_; | 193 int first_stack_local_index_; |
| 175 int num_copied_params_; | 194 int num_copied_params_; |
| 176 int num_stack_locals_; | 195 int num_stack_locals_; |
| 177 bool have_seen_await_expr_; | 196 bool have_seen_await_expr_; |
| 197 LocalVariable* saved_try_ctx_; |
| 198 LocalVariable* async_saved_try_ctx_; |
| 178 | 199 |
| 179 Isolate* isolate_; | 200 Isolate* isolate_; |
| 180 | 201 |
| 181 DISALLOW_COPY_AND_ASSIGN(ParsedFunction); | 202 DISALLOW_COPY_AND_ASSIGN(ParsedFunction); |
| 182 }; | 203 }; |
| 183 | 204 |
| 184 | 205 |
| 185 class Parser : public ValueObject { | 206 class Parser : public ValueObject { |
| 186 public: | 207 public: |
| 187 // Parse the top level of a whole script file and register declared classes | 208 // Parse the top level of a whole script file and register declared classes |
| (...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 699 AstNode* MakeAssertCall(intptr_t begin, intptr_t end); | 720 AstNode* MakeAssertCall(intptr_t begin, intptr_t end); |
| 700 AstNode* ThrowTypeError(intptr_t type_pos, const AbstractType& type); | 721 AstNode* ThrowTypeError(intptr_t type_pos, const AbstractType& type); |
| 701 AstNode* ThrowNoSuchMethodError(intptr_t call_pos, | 722 AstNode* ThrowNoSuchMethodError(intptr_t call_pos, |
| 702 const Class& cls, | 723 const Class& cls, |
| 703 const String& function_name, | 724 const String& function_name, |
| 704 ArgumentListNode* function_arguments, | 725 ArgumentListNode* function_arguments, |
| 705 InvocationMirror::Call call, | 726 InvocationMirror::Call call, |
| 706 InvocationMirror::Type type, | 727 InvocationMirror::Type type, |
| 707 const Function* func); | 728 const Function* func); |
| 708 | 729 |
| 730 void SetupSavedTryContext(LocalScope* saved_try_context_scope, |
| 731 int16_t try_index, |
| 732 SequenceNode* target); |
| 733 |
| 709 void CheckOperatorArity(const MemberDesc& member); | 734 void CheckOperatorArity(const MemberDesc& member); |
| 710 | 735 |
| 711 void EnsureExpressionTemp(); | 736 void EnsureExpressionTemp(); |
| 712 void EnsureSavedCurrentContext(); | 737 void EnsureSavedCurrentContext(); |
| 713 bool IsLegalAssignableSyntax(AstNode* expr, intptr_t end_pos); | 738 bool IsLegalAssignableSyntax(AstNode* expr, intptr_t end_pos); |
| 714 AstNode* CreateAssignmentNode(AstNode* original, | 739 AstNode* CreateAssignmentNode(AstNode* original, |
| 715 AstNode* rhs, | 740 AstNode* rhs, |
| 716 const String* left_ident, | 741 const String* left_ident, |
| 717 intptr_t left_pos); | 742 intptr_t left_pos); |
| 718 AstNode* InsertClosureCallNodes(AstNode* condition); | 743 AstNode* InsertClosureCallNodes(AstNode* condition); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 783 int16_t last_used_try_index_; | 808 int16_t last_used_try_index_; |
| 784 | 809 |
| 785 bool unregister_pending_function_; | 810 bool unregister_pending_function_; |
| 786 | 811 |
| 787 DISALLOW_COPY_AND_ASSIGN(Parser); | 812 DISALLOW_COPY_AND_ASSIGN(Parser); |
| 788 }; | 813 }; |
| 789 | 814 |
| 790 } // namespace dart | 815 } // namespace dart |
| 791 | 816 |
| 792 #endif // VM_PARSER_H_ | 817 #endif // VM_PARSER_H_ |
| OLD | NEW |