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 "vm/ast.h" | 10 #include "vm/ast.h" |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 void set_default_parameter_values(const Array& default_parameter_values) { | 61 void set_default_parameter_values(const Array& default_parameter_values) { |
62 default_parameter_values_ = default_parameter_values.raw(); | 62 default_parameter_values_ = default_parameter_values.raw(); |
63 } | 63 } |
64 | 64 |
65 LocalVariable* saved_context_var() const { return saved_context_var_; } | 65 LocalVariable* saved_context_var() const { return saved_context_var_; } |
66 void set_saved_context_var(LocalVariable* saved_context_var) { | 66 void set_saved_context_var(LocalVariable* saved_context_var) { |
67 ASSERT(saved_context_var != NULL); | 67 ASSERT(saved_context_var != NULL); |
68 saved_context_var_ = saved_context_var; | 68 saved_context_var_ = saved_context_var; |
69 } | 69 } |
70 | 70 |
| 71 // Returns NULL if this function does not save the arguments descriptor on |
| 72 // entry. |
| 73 LocalVariable* GetSavedArgumentsDescriptorVar() const; |
| 74 |
71 LocalVariable* expression_temp_var() const { | 75 LocalVariable* expression_temp_var() const { |
72 ASSERT(has_expression_temp_var()); | 76 ASSERT(has_expression_temp_var()); |
73 return expression_temp_var_; | 77 return expression_temp_var_; |
74 } | 78 } |
75 void set_expression_temp_var(LocalVariable* value) { | 79 void set_expression_temp_var(LocalVariable* value) { |
76 ASSERT(!has_expression_temp_var()); | 80 ASSERT(!has_expression_temp_var()); |
77 expression_temp_var_ = value; | 81 expression_temp_var_ = value; |
78 } | 82 } |
79 bool has_expression_temp_var() const { | 83 bool has_expression_temp_var() const { |
80 return expression_temp_var_ != NULL; | 84 return expression_temp_var_ != NULL; |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 AstNode* ParseStringLiteral(); | 456 AstNode* ParseStringLiteral(); |
453 String* ParseImportStringLiteral(); | 457 String* ParseImportStringLiteral(); |
454 AstNode* ParseCompoundLiteral(); | 458 AstNode* ParseCompoundLiteral(); |
455 AstNode* ParseListLiteral(intptr_t type_pos, | 459 AstNode* ParseListLiteral(intptr_t type_pos, |
456 bool is_const, | 460 bool is_const, |
457 const AbstractTypeArguments& type_arguments); | 461 const AbstractTypeArguments& type_arguments); |
458 AstNode* ParseMapLiteral(intptr_t type_pos, | 462 AstNode* ParseMapLiteral(intptr_t type_pos, |
459 bool is_const, | 463 bool is_const, |
460 const AbstractTypeArguments& type_arguments); | 464 const AbstractTypeArguments& type_arguments); |
461 AstNode* ParseNewOperator(); | 465 AstNode* ParseNewOperator(); |
| 466 AstNode* ParseArgumentDefinitionTest(); |
462 | 467 |
463 // An implicit argument, if non-null, is prepended to the returned list. | 468 // An implicit argument, if non-null, is prepended to the returned list. |
464 ArgumentListNode* ParseActualParameters(ArgumentListNode* implicit_arguments, | 469 ArgumentListNode* ParseActualParameters(ArgumentListNode* implicit_arguments, |
465 bool require_const); | 470 bool require_const); |
466 AstNode* ParseStaticCall(const Class& cls, | 471 AstNode* ParseStaticCall(const Class& cls, |
467 const String& method_name, | 472 const String& method_name, |
468 intptr_t ident_pos); | 473 intptr_t ident_pos); |
469 AstNode* ParseInstanceCall(AstNode* receiver, const String& method_name); | 474 AstNode* ParseInstanceCall(AstNode* receiver, const String& method_name); |
470 AstNode* ParseClosureCall(AstNode* closure); | 475 AstNode* ParseClosureCall(AstNode* closure); |
471 AstNode* GenerateStaticFieldLookup(const Field& field, | 476 AstNode* GenerateStaticFieldLookup(const Field& field, |
472 intptr_t ident_pos); | 477 intptr_t ident_pos); |
473 AstNode* ParseStaticFieldAccess(const Class& cls, | 478 AstNode* ParseStaticFieldAccess(const Class& cls, |
474 const String& field_name, | 479 const String& field_name, |
475 intptr_t ident_pos, | 480 intptr_t ident_pos, |
476 bool consume_cascades); | 481 bool consume_cascades); |
477 | 482 |
478 LocalVariable* LookupLocalScope(const String& ident); | 483 LocalVariable* LookupLocalScope(const String& ident); |
| 484 bool IsFormalParameter(const String& ident, |
| 485 Function* owner_function, |
| 486 LocalScope** owner_scope, |
| 487 intptr_t* local_index); |
479 void CheckInstanceFieldAccess(intptr_t field_pos, const String& field_name); | 488 void CheckInstanceFieldAccess(intptr_t field_pos, const String& field_name); |
480 RawClass* TypeParametersScopeClass() const; | 489 RawClass* TypeParametersScopeClass() const; |
481 const Type* ReceiverType(intptr_t type_pos) const; | 490 const Type* ReceiverType(intptr_t type_pos) const; |
482 bool IsInstantiatorRequired() const; | 491 bool IsInstantiatorRequired() const; |
483 bool IsDefinedInLexicalScope(const String& ident); | 492 bool IsDefinedInLexicalScope(const String& ident); |
484 bool ResolveIdentInLocalScope(intptr_t ident_pos, | 493 bool ResolveIdentInLocalScope(intptr_t ident_pos, |
485 const String &ident, | 494 const String &ident, |
486 AstNode** node); | 495 AstNode** node); |
487 static const bool kResolveLocally = true; | 496 static const bool kResolveLocally = true; |
488 static const bool kResolveIncludingImports = false; | 497 static const bool kResolveIncludingImports = false; |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
594 | 603 |
595 // Allocate temporary only once per function. | 604 // Allocate temporary only once per function. |
596 LocalVariable* expression_temp_; | 605 LocalVariable* expression_temp_; |
597 | 606 |
598 DISALLOW_COPY_AND_ASSIGN(Parser); | 607 DISALLOW_COPY_AND_ASSIGN(Parser); |
599 }; | 608 }; |
600 | 609 |
601 } // namespace dart | 610 } // namespace dart |
602 | 611 |
603 #endif // VM_PARSER_H_ | 612 #endif // VM_PARSER_H_ |
OLD | NEW |