| 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 | 
|---|