Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: vm/object.h

Issue 10632009: Make the parser agnostic to the TokenStream implementation. This is the first step towards compacti… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « vm/intermediate_language_x64.cc ('k') | vm/object.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_OBJECT_H_ 5 #ifndef VM_OBJECT_H_
6 #define VM_OBJECT_H_ 6 #define VM_OBJECT_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "platform/utils.h" 10 #include "platform/utils.h"
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 473
474 intptr_t id() const { return raw_ptr()->id_; } 474 intptr_t id() const { return raw_ptr()->id_; }
475 void set_id(intptr_t value) const { 475 void set_id(intptr_t value) const {
476 raw_ptr()->id_ = value; 476 raw_ptr()->id_ = value;
477 } 477 }
478 478
479 RawString* Name() const; 479 RawString* Name() const;
480 480
481 RawScript* script() const { return raw_ptr()->script_; } 481 RawScript* script() const { return raw_ptr()->script_; }
482 482
483 intptr_t token_index() const { return raw_ptr()->token_index_; } 483 intptr_t token_pos() const { return raw_ptr()->token_pos_; }
484 484
485 // This class represents the signature class of a closure function if 485 // This class represents the signature class of a closure function if
486 // signature_function() is not null. 486 // signature_function() is not null.
487 // The associated function may be a closure function (with code) or a 487 // The associated function may be a closure function (with code) or a
488 // signature function (without code) solely describing the result type and 488 // signature function (without code) solely describing the result type and
489 // parameter types of the signature. 489 // parameter types of the signature.
490 RawFunction* signature_function() const { 490 RawFunction* signature_function() const {
491 return raw_ptr()->signature_function_; 491 return raw_ptr()->signature_function_;
492 } 492 }
493 static intptr_t signature_function_offset() { 493 static intptr_t signature_function_offset() {
(...skipping 23 matching lines...) Expand all
517 // Type parameter bounds (implicitly Dynamic if not explicitly specified) as 517 // Type parameter bounds (implicitly Dynamic if not explicitly specified) as
518 // an array of AbstractType. 518 // an array of AbstractType.
519 RawTypeArguments* type_parameter_bounds() const { 519 RawTypeArguments* type_parameter_bounds() const {
520 return raw_ptr()->type_parameter_bounds_; 520 return raw_ptr()->type_parameter_bounds_;
521 } 521 }
522 void set_type_parameter_bounds(const TypeArguments& value) const; 522 void set_type_parameter_bounds(const TypeArguments& value) const;
523 523
524 // Return a TypeParameter if the type_name is a type parameter of this class. 524 // Return a TypeParameter if the type_name is a type parameter of this class.
525 // Return null otherwise. 525 // Return null otherwise.
526 RawTypeParameter* LookupTypeParameter(const String& type_name, 526 RawTypeParameter* LookupTypeParameter(const String& type_name,
527 intptr_t token_index) const; 527 intptr_t token_pos) const;
528 528
529 // The type argument vector is flattened and includes the type arguments of 529 // The type argument vector is flattened and includes the type arguments of
530 // the super class. 530 // the super class.
531 bool HasTypeArguments() const; 531 bool HasTypeArguments() const;
532 intptr_t NumTypeArguments() const; 532 intptr_t NumTypeArguments() const;
533 533
534 // If this class is parameterized, each instance has a type_arguments field. 534 // If this class is parameterized, each instance has a type_arguments field.
535 static const intptr_t kNoTypeArguments = -1; 535 static const intptr_t kNoTypeArguments = -1;
536 intptr_t type_arguments_instance_field_offset() const { 536 intptr_t type_arguments_instance_field_offset() const {
537 ASSERT(is_finalized() || is_prefinalized()); 537 ASSERT(is_finalized() || is_prefinalized());
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 RawArray* fields() const { return raw_ptr()->fields_; } 634 RawArray* fields() const { return raw_ptr()->fields_; }
635 void SetFields(const Array& value) const; 635 void SetFields(const Array& value) const;
636 636
637 // Returns true if non-static fields are defined. 637 // Returns true if non-static fields are defined.
638 bool HasInstanceFields() const; 638 bool HasInstanceFields() const;
639 639
640 RawArray* functions() const { return raw_ptr()->functions_; } 640 RawArray* functions() const { return raw_ptr()->functions_; }
641 void SetFunctions(const Array& value) const; 641 void SetFunctions(const Array& value) const;
642 642
643 void AddClosureFunction(const Function& function) const; 643 void AddClosureFunction(const Function& function) const;
644 RawFunction* LookupClosureFunction(intptr_t token_index) const; 644 RawFunction* LookupClosureFunction(intptr_t token_pos) const;
645 645
646 RawFunction* LookupDynamicFunction(const String& name) const; 646 RawFunction* LookupDynamicFunction(const String& name) const;
647 RawFunction* LookupStaticFunction(const String& name) const; 647 RawFunction* LookupStaticFunction(const String& name) const;
648 RawFunction* LookupConstructor(const String& name) const; 648 RawFunction* LookupConstructor(const String& name) const;
649 RawFunction* LookupFactory(const String& name) const; 649 RawFunction* LookupFactory(const String& name) const;
650 RawFunction* LookupFunction(const String& name) const; 650 RawFunction* LookupFunction(const String& name) const;
651 RawFunction* LookupGetterFunction(const String& name) const; 651 RawFunction* LookupGetterFunction(const String& name) const;
652 RawFunction* LookupSetterFunction(const String& name) const; 652 RawFunction* LookupSetterFunction(const String& name) const;
653 RawFunction* LookupFunctionAtToken(intptr_t token_index) const; 653 RawFunction* LookupFunctionAtToken(intptr_t token_pos) const;
654 RawField* LookupInstanceField(const String& name) const; 654 RawField* LookupInstanceField(const String& name) const;
655 RawField* LookupStaticField(const String& name) const; 655 RawField* LookupStaticField(const String& name) const;
656 RawField* LookupField(const String& name) const; 656 RawField* LookupField(const String& name) const;
657 657
658 RawLibraryPrefix* LookupLibraryPrefix(const String& name) const; 658 RawLibraryPrefix* LookupLibraryPrefix(const String& name) const;
659 659
660 void InsertCanonicalConstant(intptr_t index, const Instance& constant) const; 660 void InsertCanonicalConstant(intptr_t index, const Instance& constant) const;
661 661
662 static intptr_t InstanceSize() { 662 static intptr_t InstanceSize() {
663 return RoundedAllocationSize(sizeof(RawClass)); 663 return RoundedAllocationSize(sizeof(RawClass));
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 RawArray* constants() const; 705 RawArray* constants() const;
706 706
707 void Finalize() const; 707 void Finalize() const;
708 708
709 // Allocate a class used for VM internal objects. 709 // Allocate a class used for VM internal objects.
710 template <class FakeObject> static RawClass* New(); 710 template <class FakeObject> static RawClass* New();
711 711
712 // Allocate instance classes and interfaces. 712 // Allocate instance classes and interfaces.
713 static RawClass* New(const String& name, 713 static RawClass* New(const String& name,
714 const Script& script, 714 const Script& script,
715 intptr_t token_index); 715 intptr_t token_pos);
716 static RawClass* NewInterface(const String& name, 716 static RawClass* NewInterface(const String& name,
717 const Script& script, 717 const Script& script,
718 intptr_t token_index); 718 intptr_t token_pos);
719 static RawClass* NewNativeWrapper(Library* library, 719 static RawClass* NewNativeWrapper(Library* library,
720 const String& name, 720 const String& name,
721 int num_fields); 721 int num_fields);
722 722
723 // Allocate a class representing a function signature described by 723 // Allocate a class representing a function signature described by
724 // signature_function, which must be a closure function or a signature 724 // signature_function, which must be a closure function or a signature
725 // function. 725 // function.
726 // The class may be type parameterized unless the signature_function is in a 726 // The class may be type parameterized unless the signature_function is in a
727 // static scope. In that case, the type parameters are copied from the owner 727 // static scope. In that case, the type parameters are copied from the owner
728 // class of signature_function. 728 // class of signature_function.
729 static RawClass* NewSignatureClass(const String& name, 729 static RawClass* NewSignatureClass(const String& name,
730 const Function& signature_function, 730 const Function& signature_function,
731 const Script& script); 731 const Script& script);
732 732
733 // Return a class object corresponding to the specified kind. If 733 // Return a class object corresponding to the specified kind. If
734 // a canonicalized version of it exists then that object is returned 734 // a canonicalized version of it exists then that object is returned
735 // otherwise a new object is allocated and returned. 735 // otherwise a new object is allocated and returned.
736 static RawClass* GetClass(ObjectKind kind); 736 static RawClass* GetClass(ObjectKind kind);
737 737
738 private: 738 private:
739 void set_name(const String& value) const; 739 void set_name(const String& value) const;
740 void set_script(const Script& value) const; 740 void set_script(const Script& value) const;
741 void set_token_index(intptr_t value) const; 741 void set_token_pos(intptr_t value) const;
742 void set_signature_function(const Function& value) const; 742 void set_signature_function(const Function& value) const;
743 void set_signature_type(const AbstractType& value) const; 743 void set_signature_type(const AbstractType& value) const;
744 void set_class_state(int8_t state) const; 744 void set_class_state(int8_t state) const;
745 745
746 void set_constants(const Array& value) const; 746 void set_constants(const Array& value) const;
747 747
748 void set_canonical_types(const Array& value) const; 748 void set_canonical_types(const Array& value) const;
749 RawArray* canonical_types() const; 749 RawArray* canonical_types() const;
750 750
751 void CalculateFieldOffsets() const; 751 void CalculateFieldOffsets() const;
752 752
753 // Assigns empty array to all raw class array fields. 753 // Assigns empty array to all raw class array fields.
754 void InitEmptyFields(); 754 void InitEmptyFields();
755 755
756 RawFunction* LookupAccessorFunction(const char* prefix, 756 RawFunction* LookupAccessorFunction(const char* prefix,
757 intptr_t prefix_length, 757 intptr_t prefix_length,
758 const String& name) const; 758 const String& name) const;
759 759
760 // Allocate an instance class which has a VM implementation. 760 // Allocate an instance class which has a VM implementation.
761 template <class FakeInstance> static RawClass* New(intptr_t id); 761 template <class FakeInstance> static RawClass* New(intptr_t id);
762 template <class FakeInstance> static RawClass* New(const String& name, 762 template <class FakeInstance> static RawClass* New(const String& name,
763 const Script& script, 763 const Script& script,
764 intptr_t token_index); 764 intptr_t token_pos);
765 765
766 // Check the subtype or 'more specific' relationship. 766 // Check the subtype or 'more specific' relationship.
767 bool TypeTest(TypeTestKind test_kind, 767 bool TypeTest(TypeTestKind test_kind,
768 const AbstractTypeArguments& type_arguments, 768 const AbstractTypeArguments& type_arguments,
769 const Class& other, 769 const Class& other,
770 const AbstractTypeArguments& other_type_arguments, 770 const AbstractTypeArguments& other_type_arguments,
771 Error* malformed_error) const; 771 Error* malformed_error) const;
772 772
773 HEAP_OBJECT_IMPLEMENTATION(Class, Object); 773 HEAP_OBJECT_IMPLEMENTATION(Class, Object);
774 friend class Object; 774 friend class Object;
775 friend class Instance; 775 friend class Instance;
776 friend class AbstractType; 776 friend class AbstractType;
777 friend class Type; 777 friend class Type;
778 }; 778 };
779 779
780 780
781 // Unresolved class is used for storing unresolved names which will be resolved 781 // Unresolved class is used for storing unresolved names which will be resolved
782 // to a class after all classes have been loaded and finalized. 782 // to a class after all classes have been loaded and finalized.
783 class UnresolvedClass : public Object { 783 class UnresolvedClass : public Object {
784 public: 784 public:
785 RawLibraryPrefix* library_prefix() const { 785 RawLibraryPrefix* library_prefix() const {
786 return raw_ptr()->library_prefix_; 786 return raw_ptr()->library_prefix_;
787 } 787 }
788 RawString* ident() const { return raw_ptr()->ident_; } 788 RawString* ident() const { return raw_ptr()->ident_; }
789 intptr_t token_index() const { return raw_ptr()->token_index_; } 789 intptr_t token_pos() const { return raw_ptr()->token_pos_; }
790 790
791 RawClass* factory_signature_class() const { 791 RawClass* factory_signature_class() const {
792 return raw_ptr()->factory_signature_class_; 792 return raw_ptr()->factory_signature_class_;
793 } 793 }
794 void set_factory_signature_class(const Class& value) const; 794 void set_factory_signature_class(const Class& value) const;
795 795
796 RawString* Name() const; 796 RawString* Name() const;
797 797
798 static intptr_t InstanceSize() { 798 static intptr_t InstanceSize() {
799 return RoundedAllocationSize(sizeof(RawUnresolvedClass)); 799 return RoundedAllocationSize(sizeof(RawUnresolvedClass));
800 } 800 }
801 static RawUnresolvedClass* New(const LibraryPrefix& library_prefix, 801 static RawUnresolvedClass* New(const LibraryPrefix& library_prefix,
802 const String& ident, 802 const String& ident,
803 intptr_t token_index); 803 intptr_t token_pos);
804 804
805 private: 805 private:
806 void set_library_prefix(const LibraryPrefix& library_prefix) const; 806 void set_library_prefix(const LibraryPrefix& library_prefix) const;
807 void set_ident(const String& ident) const; 807 void set_ident(const String& ident) const;
808 void set_token_index(intptr_t token_index) const; 808 void set_token_pos(intptr_t token_pos) const;
809 809
810 static RawUnresolvedClass* New(); 810 static RawUnresolvedClass* New();
811 811
812 HEAP_OBJECT_IMPLEMENTATION(UnresolvedClass, Object); 812 HEAP_OBJECT_IMPLEMENTATION(UnresolvedClass, Object);
813 friend class Class; 813 friend class Class;
814 }; 814 };
815 815
816 816
817 // AbstractType is an abstract superclass. 817 // AbstractType is an abstract superclass.
818 // Subclasses of AbstractType are Type and TypeParameter. 818 // Subclasses of AbstractType are Type and TypeParameter.
819 class AbstractType : public Object { 819 class AbstractType : public Object {
820 public: 820 public:
821 virtual bool IsFinalized() const; 821 virtual bool IsFinalized() const;
822 virtual bool IsBeingFinalized() const; 822 virtual bool IsBeingFinalized() const;
823 virtual bool IsMalformed() const; 823 virtual bool IsMalformed() const;
824 virtual RawError* malformed_error() const; 824 virtual RawError* malformed_error() const;
825 virtual void set_malformed_error(const Error& value) const; 825 virtual void set_malformed_error(const Error& value) const;
826 virtual bool IsResolved() const; 826 virtual bool IsResolved() const;
827 virtual bool HasResolvedTypeClass() const; 827 virtual bool HasResolvedTypeClass() const;
828 virtual RawClass* type_class() const; 828 virtual RawClass* type_class() const;
829 virtual RawUnresolvedClass* unresolved_class() const; 829 virtual RawUnresolvedClass* unresolved_class() const;
830 virtual RawAbstractTypeArguments* arguments() const; 830 virtual RawAbstractTypeArguments* arguments() const;
831 virtual intptr_t token_index() const; 831 virtual intptr_t token_pos() const;
832 virtual bool IsInstantiated() const; 832 virtual bool IsInstantiated() const;
833 virtual bool Equals(const AbstractType& other) const; 833 virtual bool Equals(const AbstractType& other) const;
834 virtual bool IsIdentical(const AbstractType& other) const; 834 virtual bool IsIdentical(const AbstractType& other) const;
835 835
836 // Instantiate this type using the given type argument vector. 836 // Instantiate this type using the given type argument vector.
837 // Return a new type, or return 'this' if it is already instantiated. 837 // Return a new type, or return 'this' if it is already instantiated.
838 virtual RawAbstractType* InstantiateFrom( 838 virtual RawAbstractType* InstantiateFrom(
839 const AbstractTypeArguments& instantiator_type_arguments) const; 839 const AbstractTypeArguments& instantiator_type_arguments) const;
840 840
841 // Return the canonical version of this type. 841 // Return the canonical version of this type.
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
952 virtual RawError* malformed_error() const; 952 virtual RawError* malformed_error() const;
953 virtual void set_malformed_error(const Error& value) const; 953 virtual void set_malformed_error(const Error& value) const;
954 virtual bool IsResolved() const; // Class and all arguments classes resolved. 954 virtual bool IsResolved() const; // Class and all arguments classes resolved.
955 virtual bool HasResolvedTypeClass() const; // Own type class resolved. 955 virtual bool HasResolvedTypeClass() const; // Own type class resolved.
956 virtual RawClass* type_class() const; 956 virtual RawClass* type_class() const;
957 void set_type_class(const Object& value) const; 957 void set_type_class(const Object& value) const;
958 virtual RawUnresolvedClass* unresolved_class() const; 958 virtual RawUnresolvedClass* unresolved_class() const;
959 RawString* TypeClassName() const; 959 RawString* TypeClassName() const;
960 virtual RawAbstractTypeArguments* arguments() const; 960 virtual RawAbstractTypeArguments* arguments() const;
961 void set_arguments(const AbstractTypeArguments& value) const; 961 void set_arguments(const AbstractTypeArguments& value) const;
962 virtual intptr_t token_index() const { return raw_ptr()->token_index_; } 962 virtual intptr_t token_pos() const { return raw_ptr()->token_pos_; }
963 virtual bool IsInstantiated() const; 963 virtual bool IsInstantiated() const;
964 virtual bool Equals(const AbstractType& other) const; 964 virtual bool Equals(const AbstractType& other) const;
965 virtual bool IsIdentical(const AbstractType& other) const; 965 virtual bool IsIdentical(const AbstractType& other) const;
966 virtual RawAbstractType* InstantiateFrom( 966 virtual RawAbstractType* InstantiateFrom(
967 const AbstractTypeArguments& instantiator_type_arguments) const; 967 const AbstractTypeArguments& instantiator_type_arguments) const;
968 virtual RawAbstractType* Canonicalize() const; 968 virtual RawAbstractType* Canonicalize() const;
969 969
970 static intptr_t InstanceSize() { 970 static intptr_t InstanceSize() {
971 return RoundedAllocationSize(sizeof(RawType)); 971 return RoundedAllocationSize(sizeof(RawType));
972 } 972 }
(...skipping 29 matching lines...) Expand all
1002 static RawType* FunctionInterface(); 1002 static RawType* FunctionInterface();
1003 1003
1004 // The 'List' interface type. 1004 // The 'List' interface type.
1005 static RawType* ListInterface(); 1005 static RawType* ListInterface();
1006 1006
1007 // The finalized type of the given non-parameterized class. 1007 // The finalized type of the given non-parameterized class.
1008 static RawType* NewNonParameterizedType(const Class& type_class); 1008 static RawType* NewNonParameterizedType(const Class& type_class);
1009 1009
1010 static RawType* New(const Object& clazz, 1010 static RawType* New(const Object& clazz,
1011 const AbstractTypeArguments& arguments, 1011 const AbstractTypeArguments& arguments,
1012 intptr_t token_index); 1012 intptr_t token_pos);
1013 1013
1014 private: 1014 private:
1015 void set_token_index(intptr_t token_index) const; 1015 void set_token_pos(intptr_t token_pos) const;
1016 void set_type_state(int8_t state) const; 1016 void set_type_state(int8_t state) const;
1017 1017
1018 static RawType* New(); 1018 static RawType* New();
1019 1019
1020 HEAP_OBJECT_IMPLEMENTATION(Type, AbstractType); 1020 HEAP_OBJECT_IMPLEMENTATION(Type, AbstractType);
1021 friend class Class; 1021 friend class Class;
1022 }; 1022 };
1023 1023
1024 1024
1025 // A TypeParameter represents a type parameter of a parameterized class. 1025 // A TypeParameter represents a type parameter of a parameterized class.
(...skipping 13 matching lines...) Expand all
1039 virtual bool IsBeingFinalized() const { return false; } 1039 virtual bool IsBeingFinalized() const { return false; }
1040 virtual bool IsMalformed() const { return false; } 1040 virtual bool IsMalformed() const { return false; }
1041 virtual bool IsResolved() const { return true; } 1041 virtual bool IsResolved() const { return true; }
1042 virtual bool HasResolvedTypeClass() const { return false; } 1042 virtual bool HasResolvedTypeClass() const { return false; }
1043 RawClass* parameterized_class() const { 1043 RawClass* parameterized_class() const {
1044 return raw_ptr()->parameterized_class_; 1044 return raw_ptr()->parameterized_class_;
1045 } 1045 }
1046 virtual RawString* Name() const { return raw_ptr()->name_; } 1046 virtual RawString* Name() const { return raw_ptr()->name_; }
1047 virtual intptr_t Index() const { return raw_ptr()->index_; } 1047 virtual intptr_t Index() const { return raw_ptr()->index_; }
1048 void set_index(intptr_t value) const; 1048 void set_index(intptr_t value) const;
1049 virtual intptr_t token_index() const { return raw_ptr()->token_index_; } 1049 virtual intptr_t token_pos() const { return raw_ptr()->token_pos_; }
1050 virtual bool IsInstantiated() const { return false; } 1050 virtual bool IsInstantiated() const { return false; }
1051 virtual bool Equals(const AbstractType& other) const; 1051 virtual bool Equals(const AbstractType& other) const;
1052 virtual bool IsIdentical(const AbstractType& other) const; 1052 virtual bool IsIdentical(const AbstractType& other) const;
1053 virtual RawAbstractType* InstantiateFrom( 1053 virtual RawAbstractType* InstantiateFrom(
1054 const AbstractTypeArguments& instantiator_type_arguments) const; 1054 const AbstractTypeArguments& instantiator_type_arguments) const;
1055 virtual RawAbstractType* Canonicalize() const { return raw(); } 1055 virtual RawAbstractType* Canonicalize() const { return raw(); }
1056 1056
1057 static intptr_t InstanceSize() { 1057 static intptr_t InstanceSize() {
1058 return RoundedAllocationSize(sizeof(RawTypeParameter)); 1058 return RoundedAllocationSize(sizeof(RawTypeParameter));
1059 } 1059 }
1060 1060
1061 static RawTypeParameter* New(const Class& parameterized_class, 1061 static RawTypeParameter* New(const Class& parameterized_class,
1062 intptr_t index, 1062 intptr_t index,
1063 const String& name, 1063 const String& name,
1064 intptr_t token_index); 1064 intptr_t token_pos);
1065 1065
1066 private: 1066 private:
1067 void set_parameterized_class(const Class& value) const; 1067 void set_parameterized_class(const Class& value) const;
1068 void set_name(const String& value) const; 1068 void set_name(const String& value) const;
1069 void set_token_index(intptr_t token_index) const; 1069 void set_token_pos(intptr_t token_pos) const;
1070 void set_type_state(int8_t state) const; 1070 void set_type_state(int8_t state) const;
1071 static RawTypeParameter* New(); 1071 static RawTypeParameter* New();
1072 1072
1073 HEAP_OBJECT_IMPLEMENTATION(TypeParameter, AbstractType); 1073 HEAP_OBJECT_IMPLEMENTATION(TypeParameter, AbstractType);
1074 friend class Class; 1074 friend class Class;
1075 }; 1075 };
1076 1076
1077 1077
1078 // AbstractTypeArguments is an abstract superclass. 1078 // AbstractTypeArguments is an abstract superclass.
1079 // Subclasses of AbstractTypeArguments are TypeArguments and 1079 // Subclasses of AbstractTypeArguments are TypeArguments and
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
1392 case RawFunction::kClosureFunction: 1392 case RawFunction::kClosureFunction:
1393 case RawFunction::kConstructor: 1393 case RawFunction::kConstructor:
1394 return false; 1394 return false;
1395 default: 1395 default:
1396 UNREACHABLE(); 1396 UNREACHABLE();
1397 return false; 1397 return false;
1398 } 1398 }
1399 } 1399 }
1400 bool IsInFactoryScope() const; 1400 bool IsInFactoryScope() const;
1401 1401
1402 intptr_t token_index() const { return raw_ptr()->token_index_; } 1402 intptr_t token_pos() const { return raw_ptr()->token_pos_; }
1403 1403
1404 intptr_t end_token_index() const { return raw_ptr()->end_token_index_; } 1404 intptr_t end_token_pos() const { return raw_ptr()->end_token_pos_; }
1405 void set_end_token_index(intptr_t value) const { 1405 void set_end_token_pos(intptr_t value) const {
1406 raw_ptr()->end_token_index_ = value; 1406 raw_ptr()->end_token_pos_ = value;
1407 } 1407 }
1408 1408
1409 static intptr_t num_fixed_parameters_offset() { 1409 static intptr_t num_fixed_parameters_offset() {
1410 return OFFSET_OF(RawFunction, num_fixed_parameters_); 1410 return OFFSET_OF(RawFunction, num_fixed_parameters_);
1411 } 1411 }
1412 intptr_t num_fixed_parameters() const { 1412 intptr_t num_fixed_parameters() const {
1413 return raw_ptr()->num_fixed_parameters_; 1413 return raw_ptr()->num_fixed_parameters_;
1414 } 1414 }
1415 void set_num_fixed_parameters(intptr_t value) const; 1415 void set_num_fixed_parameters(intptr_t value) const;
1416 1416
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1527 1527
1528 1528
1529 static intptr_t InstanceSize() { 1529 static intptr_t InstanceSize() {
1530 return RoundedAllocationSize(sizeof(RawFunction)); 1530 return RoundedAllocationSize(sizeof(RawFunction));
1531 } 1531 }
1532 1532
1533 static RawFunction* New(const String& name, 1533 static RawFunction* New(const String& name,
1534 RawFunction::Kind kind, 1534 RawFunction::Kind kind,
1535 bool is_static, 1535 bool is_static,
1536 bool is_const, 1536 bool is_const,
1537 intptr_t token_index); 1537 intptr_t token_pos);
1538 1538
1539 // Allocates a new Function object representing a closure function, as well as 1539 // Allocates a new Function object representing a closure function, as well as
1540 // a new associated Class object representing the signature class of the 1540 // a new associated Class object representing the signature class of the
1541 // function. 1541 // function.
1542 // The function and the class share the same given name. 1542 // The function and the class share the same given name.
1543 static RawFunction* NewClosureFunction(const String& name, 1543 static RawFunction* NewClosureFunction(const String& name,
1544 const Function& parent, 1544 const Function& parent,
1545 intptr_t token_index); 1545 intptr_t token_pos);
1546 1546
1547 static const int kCtorPhaseInit = 1 << 0; 1547 static const int kCtorPhaseInit = 1 << 0;
1548 static const int kCtorPhaseBody = 1 << 1; 1548 static const int kCtorPhaseBody = 1 << 1;
1549 static const int kCtorPhaseAll = (kCtorPhaseInit | kCtorPhaseBody); 1549 static const int kCtorPhaseAll = (kCtorPhaseInit | kCtorPhaseBody);
1550 1550
1551 private: 1551 private:
1552 void set_name(const String& value) const; 1552 void set_name(const String& value) const;
1553 void set_kind(RawFunction::Kind value) const; 1553 void set_kind(RawFunction::Kind value) const;
1554 void set_is_static(bool is_static) const; 1554 void set_is_static(bool is_static) const;
1555 void set_is_const(bool is_const) const; 1555 void set_is_const(bool is_const) const;
1556 void set_parent_function(const Function& value) const; 1556 void set_parent_function(const Function& value) const;
1557 void set_token_index(intptr_t value) const; 1557 void set_token_pos(intptr_t value) const;
1558 void set_implicit_closure_function(const Function& value) const; 1558 void set_implicit_closure_function(const Function& value) const;
1559 static RawFunction* New(); 1559 static RawFunction* New();
1560 1560
1561 RawString* BuildSignature(bool instantiate, 1561 RawString* BuildSignature(bool instantiate,
1562 const AbstractTypeArguments& instantiator) const; 1562 const AbstractTypeArguments& instantiator) const;
1563 1563
1564 // Check the subtype or 'more specific' relationship. 1564 // Check the subtype or 'more specific' relationship.
1565 bool TypeTest(TypeTestKind test_kind, 1565 bool TypeTest(TypeTestKind test_kind,
1566 const AbstractTypeArguments& type_arguments, 1566 const AbstractTypeArguments& type_arguments,
1567 const Function& other, 1567 const Function& other,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1606 RawAbstractType* type() const { return raw_ptr()->type_; } 1606 RawAbstractType* type() const { return raw_ptr()->type_; }
1607 void set_type(const AbstractType& value) const; 1607 void set_type(const AbstractType& value) const;
1608 1608
1609 static intptr_t InstanceSize() { 1609 static intptr_t InstanceSize() {
1610 return RoundedAllocationSize(sizeof(RawField)); 1610 return RoundedAllocationSize(sizeof(RawField));
1611 } 1611 }
1612 1612
1613 static RawField* New(const String& name, 1613 static RawField* New(const String& name,
1614 bool is_static, 1614 bool is_static,
1615 bool is_final, 1615 bool is_final,
1616 intptr_t token_index); 1616 intptr_t token_pos);
1617 1617
1618 static intptr_t value_offset() { return OFFSET_OF(RawField, value_); } 1618 static intptr_t value_offset() { return OFFSET_OF(RawField, value_); }
1619 1619
1620 intptr_t token_index() const { return raw_ptr()->token_index_; } 1620 intptr_t token_pos() const { return raw_ptr()->token_pos_; }
1621 1621
1622 bool has_initializer() const { return raw_ptr()->has_initializer_; } 1622 bool has_initializer() const { return raw_ptr()->has_initializer_; }
1623 void set_has_initializer(bool has_initializer) const { 1623 void set_has_initializer(bool has_initializer) const {
1624 raw_ptr()->has_initializer_ = has_initializer; 1624 raw_ptr()->has_initializer_ = has_initializer;
1625 } 1625 }
1626 1626
1627 // Constructs getter and setter names for fields and vice versa. 1627 // Constructs getter and setter names for fields and vice versa.
1628 static RawString* GetterName(const String& field_name); 1628 static RawString* GetterName(const String& field_name);
1629 static RawString* GetterSymbol(const String& field_name); 1629 static RawString* GetterSymbol(const String& field_name);
1630 static RawString* SetterName(const String& field_name); 1630 static RawString* SetterName(const String& field_name);
1631 static RawString* SetterSymbol(const String& field_name); 1631 static RawString* SetterSymbol(const String& field_name);
1632 static RawString* NameFromGetter(const String& getter_name); 1632 static RawString* NameFromGetter(const String& getter_name);
1633 static RawString* NameFromSetter(const String& setter_name); 1633 static RawString* NameFromSetter(const String& setter_name);
1634 static bool IsGetterName(const String& function_name); 1634 static bool IsGetterName(const String& function_name);
1635 static bool IsSetterName(const String& function_name); 1635 static bool IsSetterName(const String& function_name);
1636 1636
1637 private: 1637 private:
1638 void set_name(const String& value) const; 1638 void set_name(const String& value) const;
1639 void set_is_static(bool is_static) const { 1639 void set_is_static(bool is_static) const {
1640 raw_ptr()->is_static_ = is_static; 1640 raw_ptr()->is_static_ = is_static;
1641 } 1641 }
1642 void set_is_final(bool is_final) const { 1642 void set_is_final(bool is_final) const {
1643 raw_ptr()->is_final_ = is_final; 1643 raw_ptr()->is_final_ = is_final;
1644 } 1644 }
1645 void set_token_index(intptr_t token_index) const { 1645 void set_token_pos(intptr_t token_pos) const {
1646 raw_ptr()->token_index_ = token_index; 1646 raw_ptr()->token_pos_ = token_pos;
1647 } 1647 }
1648 static RawField* New(); 1648 static RawField* New();
1649 1649
1650 HEAP_OBJECT_IMPLEMENTATION(Field, Object); 1650 HEAP_OBJECT_IMPLEMENTATION(Field, Object);
1651 friend class Class; 1651 friend class Class;
1652 }; 1652 };
1653 1653
1654 1654
1655 class LiteralToken : public Object { 1655 class LiteralToken : public Object {
1656 public: 1656 public:
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1729 1729
1730 void Tokenize(const String& private_key) const; 1730 void Tokenize(const String& private_key) const;
1731 1731
1732 RawString* GetLine(intptr_t line_number) const; 1732 RawString* GetLine(intptr_t line_number) const;
1733 1733
1734 RawString* GetSnippet(intptr_t from_line, 1734 RawString* GetSnippet(intptr_t from_line,
1735 intptr_t from_column, 1735 intptr_t from_column,
1736 intptr_t to_line, 1736 intptr_t to_line,
1737 intptr_t to_column) const; 1737 intptr_t to_column) const;
1738 1738
1739 void GetTokenLocation(intptr_t token_index, 1739 void GetTokenLocation(intptr_t token_pos,
1740 intptr_t* line, intptr_t* column) const; 1740 intptr_t* line, intptr_t* column) const;
1741 1741
1742 intptr_t TokenIndexAtLine(intptr_t line_number) const; 1742 intptr_t TokenIndexAtLine(intptr_t line_number) const;
1743 1743
1744 static intptr_t InstanceSize() { 1744 static intptr_t InstanceSize() {
1745 return RoundedAllocationSize(sizeof(RawScript)); 1745 return RoundedAllocationSize(sizeof(RawScript));
1746 } 1746 }
1747 1747
1748 static RawScript* New(const String& url, 1748 static RawScript* New(const String& url,
1749 const String& source, 1749 const String& source,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
1848 // Library imports. 1848 // Library imports.
1849 void AddImport(const Library& library) const; 1849 void AddImport(const Library& library) const;
1850 RawLibrary* LookupImport(const String& url) const; 1850 RawLibrary* LookupImport(const String& url) const;
1851 intptr_t num_imports() const { return raw_ptr()->num_imports_; } 1851 intptr_t num_imports() const { return raw_ptr()->num_imports_; }
1852 RawLibrary* ImportAt(intptr_t index) const; 1852 RawLibrary* ImportAt(intptr_t index) const;
1853 RawLibraryPrefix* ImportPrefixAt(intptr_t index) const; 1853 RawLibraryPrefix* ImportPrefixAt(intptr_t index) const;
1854 1854
1855 RawFunction* LookupFunctionInSource(const String& script_url, 1855 RawFunction* LookupFunctionInSource(const String& script_url,
1856 intptr_t line_number) const; 1856 intptr_t line_number) const;
1857 RawFunction* LookupFunctionInScript(const Script& script, 1857 RawFunction* LookupFunctionInScript(const Script& script,
1858 intptr_t token_index) const; 1858 intptr_t token_pos) const;
1859 1859
1860 // Resolving native methods for script loaded in the library. 1860 // Resolving native methods for script loaded in the library.
1861 Dart_NativeEntryResolver native_entry_resolver() const { 1861 Dart_NativeEntryResolver native_entry_resolver() const {
1862 return raw_ptr()->native_entry_resolver_; 1862 return raw_ptr()->native_entry_resolver_;
1863 } 1863 }
1864 void set_native_entry_resolver(Dart_NativeEntryResolver value) const { 1864 void set_native_entry_resolver(Dart_NativeEntryResolver value) const {
1865 raw_ptr()->native_entry_resolver_ = value; 1865 raw_ptr()->native_entry_resolver_ = value;
1866 } 1866 }
1867 1867
1868 RawString* PrivateName(const String& name) const; 1868 RawString* PrivateName(const String& name) const;
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
2074 PcDescriptors::Kind DescriptorKind(intptr_t index) const; 2074 PcDescriptors::Kind DescriptorKind(intptr_t index) const;
2075 const char* KindAsStr(intptr_t index) const; 2075 const char* KindAsStr(intptr_t index) const;
2076 intptr_t NodeId(intptr_t index) const; 2076 intptr_t NodeId(intptr_t index) const;
2077 intptr_t TokenIndex(intptr_t index) const; 2077 intptr_t TokenIndex(intptr_t index) const;
2078 intptr_t TryIndex(intptr_t index) const; 2078 intptr_t TryIndex(intptr_t index) const;
2079 2079
2080 void AddDescriptor(intptr_t index, 2080 void AddDescriptor(intptr_t index,
2081 uword pc, 2081 uword pc,
2082 PcDescriptors::Kind kind, 2082 PcDescriptors::Kind kind,
2083 intptr_t node_id, 2083 intptr_t node_id,
2084 intptr_t token_index, 2084 intptr_t token_pos,
2085 intptr_t try_index) const { 2085 intptr_t try_index) const {
2086 SetPC(index, pc); 2086 SetPC(index, pc);
2087 SetKind(index, kind); 2087 SetKind(index, kind);
2088 SetNodeId(index, node_id); 2088 SetNodeId(index, node_id);
2089 SetTokenIndex(index, token_index); 2089 SetTokenIndex(index, token_pos);
2090 SetTryIndex(index, try_index); 2090 SetTryIndex(index, try_index);
2091 } 2091 }
2092 2092
2093 static intptr_t InstanceSize() { 2093 static intptr_t InstanceSize() {
2094 ASSERT(sizeof(RawPcDescriptors) == OFFSET_OF(RawPcDescriptors, data_)); 2094 ASSERT(sizeof(RawPcDescriptors) == OFFSET_OF(RawPcDescriptors, data_));
2095 return 0; 2095 return 0;
2096 } 2096 }
2097 static intptr_t InstanceSize(intptr_t len) { 2097 static intptr_t InstanceSize(intptr_t len) {
2098 return RoundedAllocationSize( 2098 return RoundedAllocationSize(
2099 sizeof(RawPcDescriptors) + (len * kNumberOfEntries * kWordSize)); 2099 sizeof(RawPcDescriptors) + (len * kNumberOfEntries * kWordSize));
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
2486 // functions enclosing the local function. Each captured variable is represented 2486 // functions enclosing the local function. Each captured variable is represented
2487 // by its token position in the source, its name, its type, its allocation index 2487 // by its token position in the source, its name, its type, its allocation index
2488 // in the context, and its context level. The function nesting level and loop 2488 // in the context, and its context level. The function nesting level and loop
2489 // nesting level are not preserved, since they are only used until the context 2489 // nesting level are not preserved, since they are only used until the context
2490 // level is assigned. 2490 // level is assigned.
2491 class ContextScope : public Object { 2491 class ContextScope : public Object {
2492 public: 2492 public:
2493 intptr_t num_variables() const { return raw_ptr()->num_variables_; } 2493 intptr_t num_variables() const { return raw_ptr()->num_variables_; }
2494 2494
2495 intptr_t TokenIndexAt(intptr_t scope_index) const; 2495 intptr_t TokenIndexAt(intptr_t scope_index) const;
2496 void SetTokenIndexAt(intptr_t scope_index, intptr_t token_index) const; 2496 void SetTokenIndexAt(intptr_t scope_index, intptr_t token_pos) const;
2497 2497
2498 RawString* NameAt(intptr_t scope_index) const; 2498 RawString* NameAt(intptr_t scope_index) const;
2499 void SetNameAt(intptr_t scope_index, const String& name) const; 2499 void SetNameAt(intptr_t scope_index, const String& name) const;
2500 2500
2501 bool IsFinalAt(intptr_t scope_index) const; 2501 bool IsFinalAt(intptr_t scope_index) const;
2502 void SetIsFinalAt(intptr_t scope_index, bool is_const) const; 2502 void SetIsFinalAt(intptr_t scope_index, bool is_const) const;
2503 2503
2504 RawAbstractType* TypeAt(intptr_t scope_index) const; 2504 RawAbstractType* TypeAt(intptr_t scope_index) const;
2505 void SetTypeAt(intptr_t scope_index, const AbstractType& type) const; 2505 void SetTypeAt(intptr_t scope_index, const AbstractType& type) const;
2506 2506
(...skipping 2566 matching lines...) Expand 10 before | Expand all | Expand 10 after
5073 } 5073 }
5074 5074
5075 5075
5076 intptr_t Stackmap::SizeInBits() const { 5076 intptr_t Stackmap::SizeInBits() const {
5077 return (Smi::Value(raw_ptr()->bitmap_size_in_bytes_) * kBitsPerByte); 5077 return (Smi::Value(raw_ptr()->bitmap_size_in_bytes_) * kBitsPerByte);
5078 } 5078 }
5079 5079
5080 } // namespace dart 5080 } // namespace dart
5081 5081
5082 #endif // VM_OBJECT_H_ 5082 #endif // VM_OBJECT_H_
OLDNEW
« no previous file with comments | « vm/intermediate_language_x64.cc ('k') | vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698