Chromium Code Reviews| 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_RAW_OBJECT_H_ | 5 #ifndef VM_RAW_OBJECT_H_ |
| 6 #define VM_RAW_OBJECT_H_ | 6 #define VM_RAW_OBJECT_H_ |
| 7 | 7 |
| 8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
| 9 #include "vm/atomic.h" | 9 #include "vm/atomic.h" |
| 10 #include "vm/globals.h" | 10 #include "vm/globals.h" |
| (...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 602 VerifiedMemory::Write(const_cast<RawSmi**>(addr), value); | 602 VerifiedMemory::Write(const_cast<RawSmi**>(addr), value); |
| 603 } | 603 } |
| 604 | 604 |
| 605 #if defined(DEBUG) | 605 #if defined(DEBUG) |
| 606 static void ValidateOverwrittenPointer(RawObject* raw); | 606 static void ValidateOverwrittenPointer(RawObject* raw); |
| 607 static void ValidateOverwrittenSmi(RawSmi* raw); | 607 static void ValidateOverwrittenSmi(RawSmi* raw); |
| 608 #endif // DEBUG | 608 #endif // DEBUG |
| 609 | 609 |
| 610 friend class Api; | 610 friend class Api; |
| 611 friend class ApiMessageReader; // GetClassId | 611 friend class ApiMessageReader; // GetClassId |
| 612 friend class Serializer; // GetClassId | |
| 612 friend class Array; | 613 friend class Array; |
| 613 friend class Bigint; | 614 friend class Bigint; |
| 614 friend class ByteBuffer; | 615 friend class ByteBuffer; |
| 615 friend class Closure; | 616 friend class Closure; |
| 616 friend class Code; | 617 friend class Code; |
| 617 friend class Double; | 618 friend class Double; |
| 618 friend class ForwardPointersVisitor; // StorePointer | 619 friend class ForwardPointersVisitor; // StorePointer |
| 619 friend class FreeListElement; | 620 friend class FreeListElement; |
| 620 friend class Function; | 621 friend class Function; |
| 621 friend class GCMarker; | 622 friend class GCMarker; |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 637 friend class Scavenger; | 638 friend class Scavenger; |
| 638 friend class ScavengerVisitor; | 639 friend class ScavengerVisitor; |
| 639 friend class SizeExcludingClassVisitor; // GetClassId | 640 friend class SizeExcludingClassVisitor; // GetClassId |
| 640 friend class InstanceAccumulator; // GetClassId | 641 friend class InstanceAccumulator; // GetClassId |
| 641 friend class RetainingPathVisitor; // GetClassId | 642 friend class RetainingPathVisitor; // GetClassId |
| 642 friend class SkippedCodeFunctions; // StorePointer | 643 friend class SkippedCodeFunctions; // StorePointer |
| 643 friend class InstructionsReader; // tags_ check | 644 friend class InstructionsReader; // tags_ check |
| 644 friend class AssemblyInstructionsWriter; | 645 friend class AssemblyInstructionsWriter; |
| 645 friend class BlobInstructionsWriter; | 646 friend class BlobInstructionsWriter; |
| 646 friend class SnapshotReader; | 647 friend class SnapshotReader; |
| 648 friend class Deserializer; | |
| 647 friend class SnapshotWriter; | 649 friend class SnapshotWriter; |
| 648 friend class String; | 650 friend class String; |
| 649 friend class Type; // GetClassId | 651 friend class Type; // GetClassId |
| 650 friend class TypedData; | 652 friend class TypedData; |
| 651 friend class TypedDataView; | 653 friend class TypedDataView; |
| 652 friend class WeakProperty; // StorePointer | 654 friend class WeakProperty; // StorePointer |
| 653 friend class Instance; // StorePointer | 655 friend class Instance; // StorePointer |
| 654 friend class StackFrame; // GetCodeObject assertion. | 656 friend class StackFrame; // GetCodeObject assertion. |
| 655 friend class CodeLookupTableBuilder; // profiler | 657 friend class CodeLookupTableBuilder; // profiler |
| 656 friend class NativeEntry; // GetClassId | 658 friend class NativeEntry; // GetClassId |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 723 int16_t num_own_type_arguments_; // Number of non-overlapping type arguments. | 725 int16_t num_own_type_arguments_; // Number of non-overlapping type arguments. |
| 724 uint16_t num_native_fields_; // Number of native fields in class. | 726 uint16_t num_native_fields_; // Number of native fields in class. |
| 725 uint16_t state_bits_; | 727 uint16_t state_bits_; |
| 726 | 728 |
| 727 friend class Instance; | 729 friend class Instance; |
| 728 friend class Isolate; | 730 friend class Isolate; |
| 729 friend class Object; | 731 friend class Object; |
| 730 friend class RawInstance; | 732 friend class RawInstance; |
| 731 friend class RawInstructions; | 733 friend class RawInstructions; |
| 732 friend class SnapshotReader; | 734 friend class SnapshotReader; |
| 735 friend class ClassSerializationCluster; | |
| 736 friend class ClassDeserializationCluster; | |
| 737 friend class InstanceSerializationCluster; | |
| 733 }; | 738 }; |
| 734 | 739 |
| 735 | 740 |
| 736 class RawUnresolvedClass : public RawObject { | 741 class RawUnresolvedClass : public RawObject { |
| 737 RAW_HEAP_OBJECT_IMPLEMENTATION(UnresolvedClass); | 742 RAW_HEAP_OBJECT_IMPLEMENTATION(UnresolvedClass); |
| 738 | 743 |
| 739 RawObject** from() { | 744 RawObject** from() { |
| 740 return reinterpret_cast<RawObject**>(&ptr()->library_prefix_); | 745 return reinterpret_cast<RawObject**>(&ptr()->library_prefix_); |
| 741 } | 746 } |
| 742 RawLibraryPrefix* library_prefix_; // Library prefix qualifier for the ident. | 747 RawLibraryPrefix* library_prefix_; // Library prefix qualifier for the ident. |
| 743 RawString* ident_; // Name of the unresolved identifier. | 748 RawString* ident_; // Name of the unresolved identifier. |
| 744 RawObject** to() { | 749 RawObject** to() { |
| 745 return reinterpret_cast<RawObject**>(&ptr()->ident_); | 750 return reinterpret_cast<RawObject**>(&ptr()->ident_); |
| 746 } | 751 } |
| 747 TokenPosition token_pos_; | 752 TokenPosition token_pos_; |
| 753 | |
| 754 friend class UnresolvedClassSerializationCluster; | |
|
Florian Schneider
2016/06/14 20:32:20
Have you tried making these friend declarations pa
rmacnak
2016/06/21 17:53:03
Done.
| |
| 755 friend class UnresolvedClassDeserializationCluster; | |
| 748 }; | 756 }; |
| 749 | 757 |
| 750 | 758 |
| 751 class RawTypeArguments : public RawObject { | 759 class RawTypeArguments : public RawObject { |
| 752 private: | 760 private: |
| 753 RAW_HEAP_OBJECT_IMPLEMENTATION(TypeArguments); | 761 RAW_HEAP_OBJECT_IMPLEMENTATION(TypeArguments); |
| 754 | 762 |
| 755 RawObject** from() { | 763 RawObject** from() { |
| 756 return reinterpret_cast<RawObject**>(&ptr()->instantiations_); | 764 return reinterpret_cast<RawObject**>(&ptr()->instantiations_); |
| 757 } | 765 } |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 769 OPEN_ARRAY_START(RawAbstractType*, RawAbstractType*); | 777 OPEN_ARRAY_START(RawAbstractType*, RawAbstractType*); |
| 770 } | 778 } |
| 771 RawAbstractType** types() { | 779 RawAbstractType** types() { |
| 772 OPEN_ARRAY_START(RawAbstractType*, RawAbstractType*); | 780 OPEN_ARRAY_START(RawAbstractType*, RawAbstractType*); |
| 773 } | 781 } |
| 774 RawObject** to(intptr_t length) { | 782 RawObject** to(intptr_t length) { |
| 775 return reinterpret_cast<RawObject**>(&ptr()->types()[length - 1]); | 783 return reinterpret_cast<RawObject**>(&ptr()->types()[length - 1]); |
| 776 } | 784 } |
| 777 | 785 |
| 778 friend class SnapshotReader; | 786 friend class SnapshotReader; |
| 787 friend class TypeArgumentsSerializationCluster; | |
| 788 friend class TypeArgumentsDeserializationCluster; | |
| 779 }; | 789 }; |
| 780 | 790 |
| 781 | 791 |
| 782 class RawPatchClass : public RawObject { | 792 class RawPatchClass : public RawObject { |
| 783 private: | 793 private: |
| 784 RAW_HEAP_OBJECT_IMPLEMENTATION(PatchClass); | 794 RAW_HEAP_OBJECT_IMPLEMENTATION(PatchClass); |
| 785 | 795 |
| 786 RawObject** from() { | 796 RawObject** from() { |
| 787 return reinterpret_cast<RawObject**>(&ptr()->patched_class_); | 797 return reinterpret_cast<RawObject**>(&ptr()->patched_class_); |
| 788 } | 798 } |
| 789 RawClass* patched_class_; | 799 RawClass* patched_class_; |
| 790 RawClass* origin_class_; | 800 RawClass* origin_class_; |
| 791 RawScript* script_; | 801 RawScript* script_; |
| 792 RawObject** to() { | 802 RawObject** to() { |
| 793 return reinterpret_cast<RawObject**>(&ptr()->script_); | 803 return reinterpret_cast<RawObject**>(&ptr()->script_); |
| 794 } | 804 } |
| 795 | 805 |
| 796 friend class Function; | 806 friend class Function; |
| 807 friend class PatchClassSerializationCluster; | |
| 808 friend class PatchClassDeserializationCluster; | |
| 797 }; | 809 }; |
| 798 | 810 |
| 799 | 811 |
| 800 class RawFunction : public RawObject { | 812 class RawFunction : public RawObject { |
| 801 public: | 813 public: |
| 802 enum Kind { | 814 enum Kind { |
| 803 kRegularFunction, | 815 kRegularFunction, |
| 804 kClosureFunction, | 816 kClosureFunction, |
| 805 kSignatureFunction, // represents a signature only without actual code. | 817 kSignatureFunction, // represents a signature only without actual code. |
| 806 kGetterFunction, // represents getter functions e.g: get foo() { .. }. | 818 kGetterFunction, // represents getter functions e.g: get foo() { .. }. |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 822 kGeneratorBit = 0x2, | 834 kGeneratorBit = 0x2, |
| 823 kAsync = kAsyncBit, | 835 kAsync = kAsyncBit, |
| 824 kSyncGen = kGeneratorBit, | 836 kSyncGen = kGeneratorBit, |
| 825 kAsyncGen = kAsyncBit | kGeneratorBit, | 837 kAsyncGen = kAsyncBit | kGeneratorBit, |
| 826 }; | 838 }; |
| 827 | 839 |
| 828 private: | 840 private: |
| 829 // So that the SkippedCodeFunctions::DetachCode can null out the code fields. | 841 // So that the SkippedCodeFunctions::DetachCode can null out the code fields. |
| 830 friend class SkippedCodeFunctions; | 842 friend class SkippedCodeFunctions; |
| 831 friend class Class; | 843 friend class Class; |
| 844 friend class FunctionSerializationCluster; | |
| 845 friend class FunctionDeserializationCluster; | |
| 846 | |
| 832 RAW_HEAP_OBJECT_IMPLEMENTATION(Function); | 847 RAW_HEAP_OBJECT_IMPLEMENTATION(Function); |
| 848 | |
| 833 static bool ShouldVisitCode(RawCode* raw_code); | 849 static bool ShouldVisitCode(RawCode* raw_code); |
| 834 static bool CheckUsageCounter(RawFunction* raw_fun); | 850 static bool CheckUsageCounter(RawFunction* raw_fun); |
| 835 | 851 |
| 836 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->name_); } | 852 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->name_); } |
| 837 RawString* name_; | 853 RawString* name_; |
| 838 RawObject* owner_; // Class or patch class or mixin class | 854 RawObject* owner_; // Class or patch class or mixin class |
| 839 // where this function is defined. | 855 // where this function is defined. |
| 840 RawAbstractType* result_type_; | 856 RawAbstractType* result_type_; |
| 841 RawArray* parameter_types_; | 857 RawArray* parameter_types_; |
| 842 RawArray* parameter_names_; | 858 RawArray* parameter_names_; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 877 } | 893 } |
| 878 RawContextScope* context_scope_; | 894 RawContextScope* context_scope_; |
| 879 RawFunction* parent_function_; // Enclosing function of this local function. | 895 RawFunction* parent_function_; // Enclosing function of this local function. |
| 880 RawType* signature_type_; | 896 RawType* signature_type_; |
| 881 RawInstance* closure_; // Closure object for static implicit closures. | 897 RawInstance* closure_; // Closure object for static implicit closures. |
| 882 RawObject** to() { | 898 RawObject** to() { |
| 883 return reinterpret_cast<RawObject**>(&ptr()->closure_); | 899 return reinterpret_cast<RawObject**>(&ptr()->closure_); |
| 884 } | 900 } |
| 885 | 901 |
| 886 friend class Function; | 902 friend class Function; |
| 903 friend class ClosureDataSerializationCluster; | |
| 904 friend class ClosureDataDeserializationCluster; | |
| 887 }; | 905 }; |
| 888 | 906 |
| 889 | 907 |
| 890 class RawRedirectionData : public RawObject { | 908 class RawRedirectionData : public RawObject { |
| 891 private: | 909 private: |
| 892 RAW_HEAP_OBJECT_IMPLEMENTATION(RedirectionData); | 910 RAW_HEAP_OBJECT_IMPLEMENTATION(RedirectionData); |
| 893 | 911 |
| 894 RawObject** from() { | 912 RawObject** from() { |
| 895 return reinterpret_cast<RawObject**>(&ptr()->type_); | 913 return reinterpret_cast<RawObject**>(&ptr()->type_); |
| 896 } | 914 } |
| 897 RawType* type_; | 915 RawType* type_; |
| 898 RawString* identifier_; | 916 RawString* identifier_; |
| 899 RawFunction* target_; | 917 RawFunction* target_; |
| 900 RawObject** to() { | 918 RawObject** to() { |
| 901 return reinterpret_cast<RawObject**>(&ptr()->target_); | 919 return reinterpret_cast<RawObject**>(&ptr()->target_); |
| 902 } | 920 } |
| 921 | |
| 922 friend class RedirectionDataSerializationCluster; | |
| 923 friend class RedirectionDataDeserializationCluster; | |
| 903 }; | 924 }; |
| 904 | 925 |
| 905 | 926 |
| 906 class RawField : public RawObject { | 927 class RawField : public RawObject { |
| 907 RAW_HEAP_OBJECT_IMPLEMENTATION(Field); | 928 RAW_HEAP_OBJECT_IMPLEMENTATION(Field); |
| 908 | 929 |
| 909 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->name_); } | 930 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->name_); } |
| 910 RawString* name_; | 931 RawString* name_; |
| 911 RawObject* owner_; // Class or patch class or mixin class | 932 RawObject* owner_; // Class or patch class or mixin class |
| 912 // where this field is defined or original field. | 933 // where this field is defined or original field. |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 949 TokenPosition token_pos_; | 970 TokenPosition token_pos_; |
| 950 classid_t guarded_cid_; | 971 classid_t guarded_cid_; |
| 951 classid_t is_nullable_; // kNullCid if field can contain null value and | 972 classid_t is_nullable_; // kNullCid if field can contain null value and |
| 952 // any other value otherwise. | 973 // any other value otherwise. |
| 953 // Offset to the guarded length field inside an instance of class matching | 974 // Offset to the guarded length field inside an instance of class matching |
| 954 // guarded_cid_. Stored corrected by -kHeapObjectTag to simplify code | 975 // guarded_cid_. Stored corrected by -kHeapObjectTag to simplify code |
| 955 // generated on platforms with weak addressing modes (ARM, MIPS). | 976 // generated on platforms with weak addressing modes (ARM, MIPS). |
| 956 int8_t guarded_list_length_in_object_offset_; | 977 int8_t guarded_list_length_in_object_offset_; |
| 957 | 978 |
| 958 uint8_t kind_bits_; // static, final, const, has initializer.... | 979 uint8_t kind_bits_; // static, final, const, has initializer.... |
| 980 | |
| 981 friend class FieldSerializationCluster; | |
| 982 friend class FieldDeserializationCluster; | |
| 959 }; | 983 }; |
| 960 | 984 |
| 961 | 985 |
| 962 class RawLiteralToken : public RawObject { | 986 class RawLiteralToken : public RawObject { |
| 963 RAW_HEAP_OBJECT_IMPLEMENTATION(LiteralToken); | 987 RAW_HEAP_OBJECT_IMPLEMENTATION(LiteralToken); |
| 964 | 988 |
| 965 RawObject** from() { | 989 RawObject** from() { |
| 966 return reinterpret_cast<RawObject**>(&ptr()->literal_); | 990 return reinterpret_cast<RawObject**>(&ptr()->literal_); |
| 967 } | 991 } |
| 968 RawString* literal_; // Literal characters as they appear in source text. | 992 RawString* literal_; // Literal characters as they appear in source text. |
| 969 RawObject* value_; // The actual object corresponding to the token. | 993 RawObject* value_; // The actual object corresponding to the token. |
| 970 RawObject** to() { | 994 RawObject** to() { |
| 971 return reinterpret_cast<RawObject**>(&ptr()->value_); | 995 return reinterpret_cast<RawObject**>(&ptr()->value_); |
| 972 } | 996 } |
| 973 Token::Kind kind_; // The literal kind (string, integer, double). | 997 Token::Kind kind_; // The literal kind (string, integer, double). |
| 974 | 998 |
| 975 friend class SnapshotReader; | 999 friend class SnapshotReader; |
| 1000 friend class LiteralTokenSerializationCluster; | |
| 1001 friend class LiteralTokenDeserializationCluster; | |
| 976 }; | 1002 }; |
| 977 | 1003 |
| 978 | 1004 |
| 979 class RawTokenStream : public RawObject { | 1005 class RawTokenStream : public RawObject { |
| 980 RAW_HEAP_OBJECT_IMPLEMENTATION(TokenStream); | 1006 RAW_HEAP_OBJECT_IMPLEMENTATION(TokenStream); |
| 981 | 1007 |
| 982 RawObject** from() { | 1008 RawObject** from() { |
| 983 return reinterpret_cast<RawObject**>(&ptr()->private_key_); | 1009 return reinterpret_cast<RawObject**>(&ptr()->private_key_); |
| 984 } | 1010 } |
| 985 RawString* private_key_; // Key used for private identifiers. | 1011 RawString* private_key_; // Key used for private identifiers. |
| 986 RawGrowableObjectArray* token_objects_; | 1012 RawGrowableObjectArray* token_objects_; |
| 987 RawExternalTypedData* stream_; | 1013 RawExternalTypedData* stream_; |
| 988 RawObject** to() { | 1014 RawObject** to() { |
| 989 return reinterpret_cast<RawObject**>(&ptr()->stream_); | 1015 return reinterpret_cast<RawObject**>(&ptr()->stream_); |
| 990 } | 1016 } |
| 991 | 1017 |
| 992 friend class SnapshotReader; | 1018 friend class SnapshotReader; |
| 1019 friend class TokenStreamSerializationCluster; | |
| 1020 friend class TokenStreamDeserializationCluster; | |
| 993 }; | 1021 }; |
| 994 | 1022 |
| 995 | 1023 |
| 996 class RawScript : public RawObject { | 1024 class RawScript : public RawObject { |
| 997 public: | 1025 public: |
| 998 enum Kind { | 1026 enum Kind { |
| 999 kScriptTag = 0, | 1027 kScriptTag = 0, |
| 1000 kLibraryTag, | 1028 kLibraryTag, |
| 1001 kSourceTag, | 1029 kSourceTag, |
| 1002 kPatchTag, | 1030 kPatchTag, |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 1025 break; | 1053 break; |
| 1026 } | 1054 } |
| 1027 UNREACHABLE(); | 1055 UNREACHABLE(); |
| 1028 return NULL; | 1056 return NULL; |
| 1029 } | 1057 } |
| 1030 | 1058 |
| 1031 int32_t line_offset_; | 1059 int32_t line_offset_; |
| 1032 int32_t col_offset_; | 1060 int32_t col_offset_; |
| 1033 int8_t kind_; // Of type Kind. | 1061 int8_t kind_; // Of type Kind. |
| 1034 int64_t load_timestamp_; | 1062 int64_t load_timestamp_; |
| 1063 | |
| 1064 friend class ScriptSerializationCluster; | |
| 1065 friend class ScriptDeserializationCluster; | |
| 1035 }; | 1066 }; |
| 1036 | 1067 |
| 1037 | 1068 |
| 1038 class RawLibrary : public RawObject { | 1069 class RawLibrary : public RawObject { |
| 1039 enum LibraryState { | 1070 enum LibraryState { |
| 1040 kAllocated, // Initial state. | 1071 kAllocated, // Initial state. |
| 1041 kLoadRequested, // Compiler or script requested load of library. | 1072 kLoadRequested, // Compiler or script requested load of library. |
| 1042 kLoadInProgress, // Library is in the process of being loaded. | 1073 kLoadInProgress, // Library is in the process of being loaded. |
| 1043 kLoaded, // Library is loaded. | 1074 kLoaded, // Library is loaded. |
| 1044 kLoadError, // Error occurred during load of the Library. | 1075 kLoadError, // Error occurred during load of the Library. |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 1072 classid_t index_; // Library id number. | 1103 classid_t index_; // Library id number. |
| 1073 uint16_t num_imports_; // Number of entries in imports_. | 1104 uint16_t num_imports_; // Number of entries in imports_. |
| 1074 int8_t load_state_; // Of type LibraryState. | 1105 int8_t load_state_; // Of type LibraryState. |
| 1075 bool corelib_imported_; | 1106 bool corelib_imported_; |
| 1076 bool is_dart_scheme_; | 1107 bool is_dart_scheme_; |
| 1077 bool debuggable_; // True if debugger can stop in library. | 1108 bool debuggable_; // True if debugger can stop in library. |
| 1078 bool is_in_fullsnapshot_; // True if library is in a full snapshot. | 1109 bool is_in_fullsnapshot_; // True if library is in a full snapshot. |
| 1079 | 1110 |
| 1080 friend class Class; | 1111 friend class Class; |
| 1081 friend class Isolate; | 1112 friend class Isolate; |
| 1113 friend class LibrarySerializationCluster; | |
| 1114 friend class LibraryDeserializationCluster; | |
| 1082 }; | 1115 }; |
| 1083 | 1116 |
| 1084 | 1117 |
| 1085 class RawNamespace : public RawObject { | 1118 class RawNamespace : public RawObject { |
| 1086 RAW_HEAP_OBJECT_IMPLEMENTATION(Namespace); | 1119 RAW_HEAP_OBJECT_IMPLEMENTATION(Namespace); |
| 1087 | 1120 |
| 1088 RawObject** from() { | 1121 RawObject** from() { |
| 1089 return reinterpret_cast<RawObject**>(&ptr()->library_); | 1122 return reinterpret_cast<RawObject**>(&ptr()->library_); |
| 1090 } | 1123 } |
| 1091 RawLibrary* library_; // library with name dictionary. | 1124 RawLibrary* library_; // library with name dictionary. |
| 1092 RawArray* show_names_; // list of names that are exported. | 1125 RawArray* show_names_; // list of names that are exported. |
| 1093 RawArray* hide_names_; // blacklist of names that are not exported. | 1126 RawArray* hide_names_; // blacklist of names that are not exported. |
| 1094 RawField* metadata_field_; // remembers the token pos of metadata if any, | 1127 RawField* metadata_field_; // remembers the token pos of metadata if any, |
| 1095 // and the metadata values if computed. | 1128 // and the metadata values if computed. |
| 1096 RawObject** to() { | 1129 RawObject** to() { |
| 1097 return reinterpret_cast<RawObject**>(&ptr()->metadata_field_); | 1130 return reinterpret_cast<RawObject**>(&ptr()->metadata_field_); |
| 1098 } | 1131 } |
| 1132 | |
| 1133 friend class NamespaceSerializationCluster; | |
| 1134 friend class NamespaceDeserializationCluster; | |
| 1099 }; | 1135 }; |
| 1100 | 1136 |
| 1101 | 1137 |
| 1102 class RawCode : public RawObject { | 1138 class RawCode : public RawObject { |
| 1103 enum InlinedMetadataIndex { | 1139 enum InlinedMetadataIndex { |
| 1104 kInlinedIntervalsIndex = 0, | 1140 kInlinedIntervalsIndex = 0, |
| 1105 kInlinedIdToFunctionIndex = 1, | 1141 kInlinedIdToFunctionIndex = 1, |
| 1106 kInlinedCallerIdMapIndex = 2, | 1142 kInlinedCallerIdMapIndex = 2, |
| 1107 kInlinedIdToTokenPosIndex = 3, | 1143 kInlinedIdToTokenPosIndex = 3, |
| 1108 kInlinedMetadataSize = 4, | 1144 kInlinedMetadataSize = 4, |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1154 int32_t* data() { OPEN_ARRAY_START(int32_t, int32_t); } | 1190 int32_t* data() { OPEN_ARRAY_START(int32_t, int32_t); } |
| 1155 const int32_t* data() const { OPEN_ARRAY_START(int32_t, int32_t); } | 1191 const int32_t* data() const { OPEN_ARRAY_START(int32_t, int32_t); } |
| 1156 | 1192 |
| 1157 static bool ContainsPC(RawObject* raw_obj, uword pc); | 1193 static bool ContainsPC(RawObject* raw_obj, uword pc); |
| 1158 | 1194 |
| 1159 friend class Function; | 1195 friend class Function; |
| 1160 template<bool> friend class MarkingVisitorBase; | 1196 template<bool> friend class MarkingVisitorBase; |
| 1161 friend class SkippedCodeFunctions; | 1197 friend class SkippedCodeFunctions; |
| 1162 friend class StackFrame; | 1198 friend class StackFrame; |
| 1163 friend class Profiler; | 1199 friend class Profiler; |
| 1200 friend class CodeSerializationCluster; | |
| 1201 friend class CodeDeserializationCluster; | |
| 1202 friend class FunctionDeserializationCluster; | |
| 1164 }; | 1203 }; |
| 1165 | 1204 |
| 1166 | 1205 |
| 1167 class RawObjectPool : public RawObject { | 1206 class RawObjectPool : public RawObject { |
| 1168 RAW_HEAP_OBJECT_IMPLEMENTATION(ObjectPool); | 1207 RAW_HEAP_OBJECT_IMPLEMENTATION(ObjectPool); |
| 1169 | 1208 |
| 1170 intptr_t length_; | 1209 intptr_t length_; |
| 1171 RawTypedData* info_array_; | 1210 RawTypedData* info_array_; |
| 1172 | 1211 |
| 1173 struct Entry { | 1212 struct Entry { |
| 1174 union { | 1213 union { |
| 1175 RawObject* raw_obj_; | 1214 RawObject* raw_obj_; |
| 1176 uword raw_value_; | 1215 uword raw_value_; |
| 1177 }; | 1216 }; |
| 1178 }; | 1217 }; |
| 1179 Entry* data() { OPEN_ARRAY_START(Entry, Entry); } | 1218 Entry* data() { OPEN_ARRAY_START(Entry, Entry); } |
| 1180 Entry const* data() const { OPEN_ARRAY_START(Entry, Entry); } | 1219 Entry const* data() const { OPEN_ARRAY_START(Entry, Entry); } |
| 1181 | 1220 |
| 1182 Entry* first_entry() { return &ptr()->data()[0]; } | 1221 Entry* first_entry() { return &ptr()->data()[0]; } |
| 1183 | 1222 |
| 1184 friend class Object; | 1223 friend class Object; |
| 1185 friend class SnapshotReader; | 1224 friend class SnapshotReader; |
| 1225 friend class ObjectPoolSerializationCluster; | |
| 1226 friend class ObjectPoolDeserializationCluster; | |
| 1186 }; | 1227 }; |
| 1187 | 1228 |
| 1188 | 1229 |
| 1189 class RawInstructions : public RawObject { | 1230 class RawInstructions : public RawObject { |
| 1190 RAW_HEAP_OBJECT_IMPLEMENTATION(Instructions); | 1231 RAW_HEAP_OBJECT_IMPLEMENTATION(Instructions); |
| 1191 | 1232 |
| 1192 int32_t size_; | 1233 int32_t size_; |
| 1193 | 1234 |
| 1194 // Variable length data follows here. | 1235 // Variable length data follows here. |
| 1195 uint8_t* data() { OPEN_ARRAY_START(uint8_t, uint8_t); } | 1236 uint8_t* data() { OPEN_ARRAY_START(uint8_t, uint8_t); } |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1408 // Array with [num_entries_] entries. Each entry is an array of all handled | 1449 // Array with [num_entries_] entries. Each entry is an array of all handled |
| 1409 // exception types. | 1450 // exception types. |
| 1410 RawArray* handled_types_data_; | 1451 RawArray* handled_types_data_; |
| 1411 | 1452 |
| 1412 // Exception handler info of length [num_entries_]. | 1453 // Exception handler info of length [num_entries_]. |
| 1413 const HandlerInfo* data() const { OPEN_ARRAY_START(HandlerInfo, intptr_t); } | 1454 const HandlerInfo* data() const { OPEN_ARRAY_START(HandlerInfo, intptr_t); } |
| 1414 HandlerInfo* data() { OPEN_ARRAY_START(HandlerInfo, intptr_t); } | 1455 HandlerInfo* data() { OPEN_ARRAY_START(HandlerInfo, intptr_t); } |
| 1415 | 1456 |
| 1416 friend class Object; | 1457 friend class Object; |
| 1417 friend class SnapshotReader; | 1458 friend class SnapshotReader; |
| 1459 friend class ExceptionHandlersSerializationCluster; | |
| 1460 friend class ExceptionHandlersDeserializationCluster; | |
| 1418 }; | 1461 }; |
| 1419 | 1462 |
| 1420 | 1463 |
| 1421 class RawContext : public RawObject { | 1464 class RawContext : public RawObject { |
| 1422 RAW_HEAP_OBJECT_IMPLEMENTATION(Context); | 1465 RAW_HEAP_OBJECT_IMPLEMENTATION(Context); |
| 1423 | 1466 |
| 1424 int32_t num_variables_; | 1467 int32_t num_variables_; |
| 1425 | 1468 |
| 1426 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->parent_); } | 1469 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->parent_); } |
| 1427 RawContext* parent_; | 1470 RawContext* parent_; |
| 1428 | 1471 |
| 1429 // Variable length data follows here. | 1472 // Variable length data follows here. |
| 1430 RawObject** data() { OPEN_ARRAY_START(RawObject*, RawObject*); } | 1473 RawObject** data() { OPEN_ARRAY_START(RawObject*, RawObject*); } |
| 1431 RawObject* const* data() const { | 1474 RawObject* const* data() const { |
| 1432 OPEN_ARRAY_START(RawObject*, RawObject*); | 1475 OPEN_ARRAY_START(RawObject*, RawObject*); |
| 1433 } | 1476 } |
| 1434 RawObject** to(intptr_t num_vars) { | 1477 RawObject** to(intptr_t num_vars) { |
| 1435 return reinterpret_cast<RawObject**>(&ptr()->data()[num_vars - 1]); | 1478 return reinterpret_cast<RawObject**>(&ptr()->data()[num_vars - 1]); |
| 1436 } | 1479 } |
| 1437 | 1480 |
| 1438 friend class SnapshotReader; | 1481 friend class SnapshotReader; |
| 1482 friend class ContextSerializationCluster; | |
| 1483 friend class ContextDeserializationCluster; | |
| 1439 }; | 1484 }; |
| 1440 | 1485 |
| 1441 | 1486 |
| 1442 class RawContextScope : public RawObject { | 1487 class RawContextScope : public RawObject { |
| 1443 RAW_HEAP_OBJECT_IMPLEMENTATION(ContextScope); | 1488 RAW_HEAP_OBJECT_IMPLEMENTATION(ContextScope); |
| 1444 | 1489 |
| 1445 // TODO(iposva): Switch to conventional enum offset based structure to avoid | 1490 // TODO(iposva): Switch to conventional enum offset based structure to avoid |
| 1446 // alignment mishaps. | 1491 // alignment mishaps. |
| 1447 struct VariableDesc { | 1492 struct VariableDesc { |
| 1448 RawSmi* token_pos; | 1493 RawSmi* token_pos; |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 1473 } | 1518 } |
| 1474 RawObject** to(intptr_t num_vars) { | 1519 RawObject** to(intptr_t num_vars) { |
| 1475 uword end = reinterpret_cast<uword>(ptr()->VariableDescAddr(num_vars)); | 1520 uword end = reinterpret_cast<uword>(ptr()->VariableDescAddr(num_vars)); |
| 1476 // 'end' is the address just beyond the last descriptor, so step back. | 1521 // 'end' is the address just beyond the last descriptor, so step back. |
| 1477 return reinterpret_cast<RawObject**>(end - kWordSize); | 1522 return reinterpret_cast<RawObject**>(end - kWordSize); |
| 1478 } | 1523 } |
| 1479 | 1524 |
| 1480 friend class Object; | 1525 friend class Object; |
| 1481 friend class RawClosureData; | 1526 friend class RawClosureData; |
| 1482 friend class SnapshotReader; | 1527 friend class SnapshotReader; |
| 1528 friend class ContextScopeSerializationCluster; | |
| 1529 friend class ContextScopeDeserializationCluster; | |
| 1483 }; | 1530 }; |
| 1484 | 1531 |
| 1485 | 1532 |
| 1486 class RawICData : public RawObject { | 1533 class RawICData : public RawObject { |
| 1487 RAW_HEAP_OBJECT_IMPLEMENTATION(ICData); | 1534 RAW_HEAP_OBJECT_IMPLEMENTATION(ICData); |
| 1488 | 1535 |
| 1489 RawObject** from() { | 1536 RawObject** from() { |
| 1490 return reinterpret_cast<RawObject**>(&ptr()->ic_data_); | 1537 return reinterpret_cast<RawObject**>(&ptr()->ic_data_); |
| 1491 } | 1538 } |
| 1492 RawArray* ic_data_; // Contains class-ids, target and count. | 1539 RawArray* ic_data_; // Contains class-ids, target and count. |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 1512 UNREACHABLE(); | 1559 UNREACHABLE(); |
| 1513 return NULL; | 1560 return NULL; |
| 1514 } | 1561 } |
| 1515 int32_t deopt_id_; // Deoptimization id corresponding to this IC. | 1562 int32_t deopt_id_; // Deoptimization id corresponding to this IC. |
| 1516 uint32_t state_bits_; // Number of arguments tested in IC, deopt reasons, | 1563 uint32_t state_bits_; // Number of arguments tested in IC, deopt reasons, |
| 1517 // range feedback. | 1564 // range feedback. |
| 1518 #if defined(TAG_IC_DATA) | 1565 #if defined(TAG_IC_DATA) |
| 1519 intptr_t tag_; // Debugging, verifying that the icdata is assigned to the | 1566 intptr_t tag_; // Debugging, verifying that the icdata is assigned to the |
| 1520 // same instruction again. Store -1 or Instruction::Tag. | 1567 // same instruction again. Store -1 or Instruction::Tag. |
| 1521 #endif | 1568 #endif |
| 1569 | |
| 1570 friend class ICDataSerializationCluster; | |
| 1571 friend class ICDataDeserializationCluster; | |
| 1522 }; | 1572 }; |
| 1523 | 1573 |
| 1524 | 1574 |
| 1525 class RawMegamorphicCache : public RawObject { | 1575 class RawMegamorphicCache : public RawObject { |
| 1526 RAW_HEAP_OBJECT_IMPLEMENTATION(MegamorphicCache); | 1576 RAW_HEAP_OBJECT_IMPLEMENTATION(MegamorphicCache); |
| 1527 | 1577 |
| 1528 RawObject** from() { | 1578 RawObject** from() { |
| 1529 return reinterpret_cast<RawObject**>(&ptr()->buckets_); | 1579 return reinterpret_cast<RawObject**>(&ptr()->buckets_); |
| 1530 } | 1580 } |
| 1531 RawArray* buckets_; | 1581 RawArray* buckets_; |
| 1532 RawSmi* mask_; | 1582 RawSmi* mask_; |
| 1533 RawString* target_name_; // Name of target function. | 1583 RawString* target_name_; // Name of target function. |
| 1534 RawArray* args_descriptor_; // Arguments descriptor. | 1584 RawArray* args_descriptor_; // Arguments descriptor. |
| 1535 RawObject** to() { | 1585 RawObject** to() { |
| 1536 return reinterpret_cast<RawObject**>(&ptr()->args_descriptor_); | 1586 return reinterpret_cast<RawObject**>(&ptr()->args_descriptor_); |
| 1537 } | 1587 } |
| 1538 | 1588 |
| 1539 int32_t filled_entry_count_; | 1589 int32_t filled_entry_count_; |
| 1590 | |
| 1591 friend class MegamorphicCacheSerializationCluster; | |
| 1592 friend class MegamorphicCacheDeserializationCluster; | |
| 1540 }; | 1593 }; |
| 1541 | 1594 |
| 1542 | 1595 |
| 1543 class RawSubtypeTestCache : public RawObject { | 1596 class RawSubtypeTestCache : public RawObject { |
| 1544 RAW_HEAP_OBJECT_IMPLEMENTATION(SubtypeTestCache); | 1597 RAW_HEAP_OBJECT_IMPLEMENTATION(SubtypeTestCache); |
| 1545 RawArray* cache_; | 1598 RawArray* cache_; |
| 1599 | |
| 1600 friend class SubtypeTestCacheSerializationCluster; | |
| 1601 friend class SubtypeTestCacheDeserializationCluster; | |
| 1546 }; | 1602 }; |
| 1547 | 1603 |
| 1548 | 1604 |
| 1549 class RawError : public RawObject { | 1605 class RawError : public RawObject { |
| 1550 RAW_HEAP_OBJECT_IMPLEMENTATION(Error); | 1606 RAW_HEAP_OBJECT_IMPLEMENTATION(Error); |
| 1551 }; | 1607 }; |
| 1552 | 1608 |
| 1553 | 1609 |
| 1554 class RawApiError : public RawError { | 1610 class RawApiError : public RawError { |
| 1555 RAW_HEAP_OBJECT_IMPLEMENTATION(ApiError); | 1611 RAW_HEAP_OBJECT_IMPLEMENTATION(ApiError); |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 1573 RawError* previous_error_; // May be null. | 1629 RawError* previous_error_; // May be null. |
| 1574 RawScript* script_; | 1630 RawScript* script_; |
| 1575 RawString* message_; | 1631 RawString* message_; |
| 1576 RawString* formatted_message_; // Incl. previous error's formatted message. | 1632 RawString* formatted_message_; // Incl. previous error's formatted message. |
| 1577 RawObject** to() { | 1633 RawObject** to() { |
| 1578 return reinterpret_cast<RawObject**>(&ptr()->formatted_message_); | 1634 return reinterpret_cast<RawObject**>(&ptr()->formatted_message_); |
| 1579 } | 1635 } |
| 1580 TokenPosition token_pos_; // Source position in script_. | 1636 TokenPosition token_pos_; // Source position in script_. |
| 1581 bool report_after_token_; // Report message at or after the token. | 1637 bool report_after_token_; // Report message at or after the token. |
| 1582 int8_t kind_; // Of type LanguageError::Kind. | 1638 int8_t kind_; // Of type LanguageError::Kind. |
| 1639 | |
| 1640 friend class LanguageErrorSerializationCluster; | |
| 1641 friend class LanguageErrorDeserializationCluster; | |
| 1583 }; | 1642 }; |
| 1584 | 1643 |
| 1585 | 1644 |
| 1586 class RawUnhandledException : public RawError { | 1645 class RawUnhandledException : public RawError { |
| 1587 RAW_HEAP_OBJECT_IMPLEMENTATION(UnhandledException); | 1646 RAW_HEAP_OBJECT_IMPLEMENTATION(UnhandledException); |
| 1588 | 1647 |
| 1589 RawObject** from() { | 1648 RawObject** from() { |
| 1590 return reinterpret_cast<RawObject**>(&ptr()->exception_); | 1649 return reinterpret_cast<RawObject**>(&ptr()->exception_); |
| 1591 } | 1650 } |
| 1592 RawInstance* exception_; | 1651 RawInstance* exception_; |
| 1593 RawInstance* stacktrace_; | 1652 RawInstance* stacktrace_; |
| 1594 RawObject** to() { | 1653 RawObject** to() { |
| 1595 return reinterpret_cast<RawObject**>(&ptr()->stacktrace_); | 1654 return reinterpret_cast<RawObject**>(&ptr()->stacktrace_); |
| 1596 } | 1655 } |
| 1656 | |
| 1657 friend class UnhandledExceptionSerializationCluster; | |
| 1658 friend class UnhandledExceptionDeserializationCluster; | |
| 1597 }; | 1659 }; |
| 1598 | 1660 |
| 1599 | 1661 |
| 1600 class RawUnwindError : public RawError { | 1662 class RawUnwindError : public RawError { |
| 1601 RAW_HEAP_OBJECT_IMPLEMENTATION(UnwindError); | 1663 RAW_HEAP_OBJECT_IMPLEMENTATION(UnwindError); |
| 1602 | 1664 |
| 1603 RawObject** from() { | 1665 RawObject** from() { |
| 1604 return reinterpret_cast<RawObject**>(&ptr()->message_); | 1666 return reinterpret_cast<RawObject**>(&ptr()->message_); |
| 1605 } | 1667 } |
| 1606 RawString* message_; | 1668 RawString* message_; |
| 1607 RawObject** to() { | 1669 RawObject** to() { |
| 1608 return reinterpret_cast<RawObject**>(&ptr()->message_); | 1670 return reinterpret_cast<RawObject**>(&ptr()->message_); |
| 1609 } | 1671 } |
| 1610 bool is_user_initiated_; | 1672 bool is_user_initiated_; |
| 1611 bool is_vm_restart_; | 1673 bool is_vm_restart_; |
| 1612 }; | 1674 }; |
| 1613 | 1675 |
| 1614 | 1676 |
| 1615 class RawInstance : public RawObject { | 1677 class RawInstance : public RawObject { |
| 1616 RAW_HEAP_OBJECT_IMPLEMENTATION(Instance); | 1678 RAW_HEAP_OBJECT_IMPLEMENTATION(Instance); |
| 1679 | |
| 1680 friend class InstanceSerializationCluster; | |
| 1681 friend class InstanceDeserializationCluster; | |
| 1617 }; | 1682 }; |
| 1618 | 1683 |
| 1619 | 1684 |
| 1620 class RawLibraryPrefix : public RawInstance { | 1685 class RawLibraryPrefix : public RawInstance { |
| 1621 RAW_HEAP_OBJECT_IMPLEMENTATION(LibraryPrefix); | 1686 RAW_HEAP_OBJECT_IMPLEMENTATION(LibraryPrefix); |
| 1622 | 1687 |
| 1623 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->name_); } | 1688 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->name_); } |
| 1624 RawString* name_; // Library prefix name. | 1689 RawString* name_; // Library prefix name. |
| 1625 RawLibrary* importer_; // Library which declares this prefix. | 1690 RawLibrary* importer_; // Library which declares this prefix. |
| 1626 RawArray* imports_; // Libraries imported with this prefix. | 1691 RawArray* imports_; // Libraries imported with this prefix. |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 1641 case Snapshot::kNone: | 1706 case Snapshot::kNone: |
| 1642 case Snapshot::kInvalid: | 1707 case Snapshot::kInvalid: |
| 1643 break; | 1708 break; |
| 1644 } | 1709 } |
| 1645 UNREACHABLE(); | 1710 UNREACHABLE(); |
| 1646 return NULL; | 1711 return NULL; |
| 1647 } | 1712 } |
| 1648 uint16_t num_imports_; // Number of library entries in libraries_. | 1713 uint16_t num_imports_; // Number of library entries in libraries_. |
| 1649 bool is_deferred_load_; | 1714 bool is_deferred_load_; |
| 1650 bool is_loaded_; | 1715 bool is_loaded_; |
| 1716 | |
| 1717 friend class LibraryPrefixSerializationCluster; | |
| 1718 friend class LibraryPrefixDeserializationCluster; | |
| 1651 }; | 1719 }; |
| 1652 | 1720 |
| 1653 | 1721 |
| 1654 class RawAbstractType : public RawInstance { | 1722 class RawAbstractType : public RawInstance { |
| 1655 protected: | 1723 protected: |
| 1656 enum TypeState { | 1724 enum TypeState { |
| 1657 kAllocated, // Initial state. | 1725 kAllocated, // Initial state. |
| 1658 kResolved, // Type class and type arguments resolved. | 1726 kResolved, // Type class and type arguments resolved. |
| 1659 kBeingFinalized, // In the process of being finalized. | 1727 kBeingFinalized, // In the process of being finalized. |
| 1660 kFinalizedInstantiated, // Instantiated type ready for use. | 1728 kFinalizedInstantiated, // Instantiated type ready for use. |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 1687 // can describe the issue without needing the signature. | 1755 // can describe the issue without needing the signature. |
| 1688 union { | 1756 union { |
| 1689 RawFunction* signature_; // If not null, this type is a function type. | 1757 RawFunction* signature_; // If not null, this type is a function type. |
| 1690 RawLanguageError* error_; // If not null, type is malformed or malbounded. | 1758 RawLanguageError* error_; // If not null, type is malformed or malbounded. |
| 1691 } sig_or_err_; | 1759 } sig_or_err_; |
| 1692 RawObject** to() { | 1760 RawObject** to() { |
| 1693 return reinterpret_cast<RawObject**>(&ptr()->sig_or_err_.error_); | 1761 return reinterpret_cast<RawObject**>(&ptr()->sig_or_err_.error_); |
| 1694 } | 1762 } |
| 1695 TokenPosition token_pos_; | 1763 TokenPosition token_pos_; |
| 1696 int8_t type_state_; | 1764 int8_t type_state_; |
| 1765 | |
| 1766 friend class TypeSerializationCluster; | |
| 1767 friend class TypeDeserializationCluster; | |
| 1697 }; | 1768 }; |
| 1698 | 1769 |
| 1699 | 1770 |
| 1700 class RawTypeRef : public RawAbstractType { | 1771 class RawTypeRef : public RawAbstractType { |
| 1701 private: | 1772 private: |
| 1702 RAW_HEAP_OBJECT_IMPLEMENTATION(TypeRef); | 1773 RAW_HEAP_OBJECT_IMPLEMENTATION(TypeRef); |
| 1703 | 1774 |
| 1704 RawObject** from() { | 1775 RawObject** from() { |
| 1705 return reinterpret_cast<RawObject**>(&ptr()->type_); | 1776 return reinterpret_cast<RawObject**>(&ptr()->type_); |
| 1706 } | 1777 } |
| 1707 RawAbstractType* type_; // The referenced type. | 1778 RawAbstractType* type_; // The referenced type. |
| 1708 RawObject** to() { | 1779 RawObject** to() { |
| 1709 return reinterpret_cast<RawObject**>(&ptr()->type_); | 1780 return reinterpret_cast<RawObject**>(&ptr()->type_); |
| 1710 } | 1781 } |
| 1782 | |
| 1783 friend class TypeRefSerializationCluster; | |
| 1784 friend class TypeRefDeserializationCluster; | |
| 1711 }; | 1785 }; |
| 1712 | 1786 |
| 1713 | 1787 |
| 1714 class RawTypeParameter : public RawAbstractType { | 1788 class RawTypeParameter : public RawAbstractType { |
| 1715 private: | 1789 private: |
| 1716 RAW_HEAP_OBJECT_IMPLEMENTATION(TypeParameter); | 1790 RAW_HEAP_OBJECT_IMPLEMENTATION(TypeParameter); |
| 1717 | 1791 |
| 1718 RawObject** from() { | 1792 RawObject** from() { |
| 1719 return reinterpret_cast<RawObject**>(&ptr()->name_); | 1793 return reinterpret_cast<RawObject**>(&ptr()->name_); |
| 1720 } | 1794 } |
| 1721 RawString* name_; | 1795 RawString* name_; |
| 1722 RawSmi* hash_; | 1796 RawSmi* hash_; |
| 1723 RawAbstractType* bound_; // ObjectType if no explicit bound specified. | 1797 RawAbstractType* bound_; // ObjectType if no explicit bound specified. |
| 1724 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->bound_); } | 1798 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->bound_); } |
| 1725 classid_t parameterized_class_id_; | 1799 classid_t parameterized_class_id_; |
| 1726 TokenPosition token_pos_; | 1800 TokenPosition token_pos_; |
| 1727 int16_t index_; | 1801 int16_t index_; |
| 1728 int8_t type_state_; | 1802 int8_t type_state_; |
| 1803 | |
| 1804 friend class TypeParameterSerializationCluster; | |
| 1805 friend class TypeParameterDeserializationCluster; | |
| 1729 }; | 1806 }; |
| 1730 | 1807 |
| 1731 | 1808 |
| 1732 class RawBoundedType : public RawAbstractType { | 1809 class RawBoundedType : public RawAbstractType { |
| 1733 private: | 1810 private: |
| 1734 RAW_HEAP_OBJECT_IMPLEMENTATION(BoundedType); | 1811 RAW_HEAP_OBJECT_IMPLEMENTATION(BoundedType); |
| 1735 | 1812 |
| 1736 RawObject** from() { | 1813 RawObject** from() { |
| 1737 return reinterpret_cast<RawObject**>(&ptr()->type_); | 1814 return reinterpret_cast<RawObject**>(&ptr()->type_); |
| 1738 } | 1815 } |
| 1739 RawAbstractType* type_; | 1816 RawAbstractType* type_; |
| 1740 RawAbstractType* bound_; | 1817 RawAbstractType* bound_; |
| 1741 RawSmi* hash_; | 1818 RawSmi* hash_; |
| 1742 RawTypeParameter* type_parameter_; // For more detailed error reporting. | 1819 RawTypeParameter* type_parameter_; // For more detailed error reporting. |
| 1743 RawObject** to() { | 1820 RawObject** to() { |
| 1744 return reinterpret_cast<RawObject**>(&ptr()->type_parameter_); | 1821 return reinterpret_cast<RawObject**>(&ptr()->type_parameter_); |
| 1745 } | 1822 } |
| 1823 | |
| 1824 friend class BoundedTypeSerializationCluster; | |
| 1825 friend class BoundedTypeDeserializationCluster; | |
| 1746 }; | 1826 }; |
| 1747 | 1827 |
| 1748 | 1828 |
| 1749 class RawMixinAppType : public RawAbstractType { | 1829 class RawMixinAppType : public RawAbstractType { |
| 1750 private: | 1830 private: |
| 1751 RAW_HEAP_OBJECT_IMPLEMENTATION(MixinAppType); | 1831 RAW_HEAP_OBJECT_IMPLEMENTATION(MixinAppType); |
| 1752 | 1832 |
| 1753 RawObject** from() { | 1833 RawObject** from() { |
| 1754 return reinterpret_cast<RawObject**>(&ptr()->super_type_); | 1834 return reinterpret_cast<RawObject**>(&ptr()->super_type_); |
| 1755 } | 1835 } |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 1770 return reinterpret_cast<RawObject**>(&ptr()->type_arguments_); | 1850 return reinterpret_cast<RawObject**>(&ptr()->type_arguments_); |
| 1771 } | 1851 } |
| 1772 | 1852 |
| 1773 RawTypeArguments* type_arguments_; | 1853 RawTypeArguments* type_arguments_; |
| 1774 RawFunction* function_; | 1854 RawFunction* function_; |
| 1775 RawContext* context_; | 1855 RawContext* context_; |
| 1776 | 1856 |
| 1777 RawObject** to() { | 1857 RawObject** to() { |
| 1778 return reinterpret_cast<RawObject**>(&ptr()->context_); | 1858 return reinterpret_cast<RawObject**>(&ptr()->context_); |
| 1779 } | 1859 } |
| 1860 | |
| 1861 friend class ClosureSerializationCluster; | |
| 1862 friend class ClosureDeserializationCluster; | |
| 1780 }; | 1863 }; |
| 1781 | 1864 |
| 1782 | 1865 |
| 1783 class RawNumber : public RawInstance { | 1866 class RawNumber : public RawInstance { |
| 1784 RAW_OBJECT_IMPLEMENTATION(Number); | 1867 RAW_OBJECT_IMPLEMENTATION(Number); |
| 1785 }; | 1868 }; |
| 1786 | 1869 |
| 1787 | 1870 |
| 1788 class RawInteger : public RawNumber { | 1871 class RawInteger : public RawNumber { |
| 1789 RAW_OBJECT_IMPLEMENTATION(Integer); | 1872 RAW_OBJECT_IMPLEMENTATION(Integer); |
| 1790 }; | 1873 }; |
| 1791 | 1874 |
| 1792 | 1875 |
| 1793 class RawSmi : public RawInteger { | 1876 class RawSmi : public RawInteger { |
| 1794 RAW_OBJECT_IMPLEMENTATION(Smi); | 1877 RAW_OBJECT_IMPLEMENTATION(Smi); |
| 1795 }; | 1878 }; |
| 1796 | 1879 |
| 1797 | 1880 |
| 1798 class RawMint : public RawInteger { | 1881 class RawMint : public RawInteger { |
| 1799 RAW_HEAP_OBJECT_IMPLEMENTATION(Mint); | 1882 RAW_HEAP_OBJECT_IMPLEMENTATION(Mint); |
| 1800 | 1883 |
| 1801 ALIGN8 int64_t value_; | 1884 ALIGN8 int64_t value_; |
| 1802 | 1885 |
| 1803 friend class Api; | 1886 friend class Api; |
| 1804 friend class SnapshotReader; | 1887 friend class SnapshotReader; |
| 1888 friend class SmiMintSerializationCluster; | |
| 1889 friend class SmiMintDeserializationCluster; | |
| 1805 }; | 1890 }; |
| 1806 COMPILE_ASSERT(sizeof(RawMint) == 16); | 1891 COMPILE_ASSERT(sizeof(RawMint) == 16); |
| 1807 | 1892 |
| 1808 | 1893 |
| 1809 class RawBigint : public RawInteger { | 1894 class RawBigint : public RawInteger { |
| 1810 RAW_HEAP_OBJECT_IMPLEMENTATION(Bigint); | 1895 RAW_HEAP_OBJECT_IMPLEMENTATION(Bigint); |
| 1811 | 1896 |
| 1812 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->neg_); } | 1897 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->neg_); } |
| 1813 RawBool* neg_; | 1898 RawBool* neg_; |
| 1814 RawSmi* used_; | 1899 RawSmi* used_; |
| 1815 RawTypedData* digits_; | 1900 RawTypedData* digits_; |
| 1816 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->digits_); } | 1901 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->digits_); } |
| 1902 | |
| 1903 friend class BigintSerializationCluster; | |
| 1904 friend class BigintDeserializationCluster; | |
| 1817 }; | 1905 }; |
| 1818 | 1906 |
| 1819 | 1907 |
| 1820 class RawDouble : public RawNumber { | 1908 class RawDouble : public RawNumber { |
| 1821 RAW_HEAP_OBJECT_IMPLEMENTATION(Double); | 1909 RAW_HEAP_OBJECT_IMPLEMENTATION(Double); |
| 1822 | 1910 |
| 1823 ALIGN8 double value_; | 1911 ALIGN8 double value_; |
| 1824 | 1912 |
| 1825 friend class Api; | 1913 friend class Api; |
| 1826 friend class SnapshotReader; | 1914 friend class SnapshotReader; |
| 1915 friend class DoubleSerializationCluster; | |
| 1916 friend class DoubleDeserializationCluster; | |
| 1827 }; | 1917 }; |
| 1828 COMPILE_ASSERT(sizeof(RawDouble) == 16); | 1918 COMPILE_ASSERT(sizeof(RawDouble) == 16); |
| 1829 | 1919 |
| 1830 | 1920 |
| 1831 class RawString : public RawInstance { | 1921 class RawString : public RawInstance { |
| 1832 RAW_HEAP_OBJECT_IMPLEMENTATION(String); | 1922 RAW_HEAP_OBJECT_IMPLEMENTATION(String); |
| 1833 | 1923 |
| 1834 protected: | 1924 protected: |
| 1835 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->length_); } | 1925 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->length_); } |
| 1836 RawSmi* length_; | 1926 RawSmi* length_; |
| 1837 RawSmi* hash_; | 1927 RawSmi* hash_; |
| 1838 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->hash_); } | 1928 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->hash_); } |
| 1839 | 1929 |
| 1840 friend class Library; | 1930 friend class Library; |
| 1841 }; | 1931 }; |
| 1842 | 1932 |
| 1843 | 1933 |
| 1844 class RawOneByteString : public RawString { | 1934 class RawOneByteString : public RawString { |
| 1845 RAW_HEAP_OBJECT_IMPLEMENTATION(OneByteString); | 1935 RAW_HEAP_OBJECT_IMPLEMENTATION(OneByteString); |
| 1846 | 1936 |
| 1847 // Variable length data follows here. | 1937 // Variable length data follows here. |
| 1848 uint8_t* data() { OPEN_ARRAY_START(uint8_t, uint8_t); } | 1938 uint8_t* data() { OPEN_ARRAY_START(uint8_t, uint8_t); } |
| 1849 const uint8_t* data() const { OPEN_ARRAY_START(uint8_t, uint8_t); } | 1939 const uint8_t* data() const { OPEN_ARRAY_START(uint8_t, uint8_t); } |
| 1850 | 1940 |
| 1851 friend class ApiMessageReader; | 1941 friend class ApiMessageReader; |
| 1852 friend class SnapshotReader; | 1942 friend class SnapshotReader; |
| 1943 friend class OneByteStringSerializationCluster; | |
| 1944 friend class OneByteStringDeserializationCluster; | |
| 1945 friend class RODataSerializationCluster; | |
| 1853 }; | 1946 }; |
| 1854 | 1947 |
| 1855 | 1948 |
| 1856 class RawTwoByteString : public RawString { | 1949 class RawTwoByteString : public RawString { |
| 1857 RAW_HEAP_OBJECT_IMPLEMENTATION(TwoByteString); | 1950 RAW_HEAP_OBJECT_IMPLEMENTATION(TwoByteString); |
| 1858 | 1951 |
| 1859 // Variable length data follows here. | 1952 // Variable length data follows here. |
| 1860 uint16_t* data() { OPEN_ARRAY_START(uint16_t, uint16_t); } | 1953 uint16_t* data() { OPEN_ARRAY_START(uint16_t, uint16_t); } |
| 1861 const uint16_t* data() const { OPEN_ARRAY_START(uint16_t, uint16_t); } | 1954 const uint16_t* data() const { OPEN_ARRAY_START(uint16_t, uint16_t); } |
| 1862 | 1955 |
| 1863 friend class SnapshotReader; | 1956 friend class SnapshotReader; |
| 1957 friend class TwoByteStringSerializationCluster; | |
| 1958 friend class TwoByteStringDeserializationCluster; | |
| 1959 friend class RODataSerializationCluster; | |
| 1864 }; | 1960 }; |
| 1865 | 1961 |
| 1866 | 1962 |
| 1867 template<typename T> | 1963 template<typename T> |
| 1868 class ExternalStringData { | 1964 class ExternalStringData { |
| 1869 public: | 1965 public: |
| 1870 ExternalStringData(const T* data, void* peer, Dart_PeerFinalizer callback) : | 1966 ExternalStringData(const T* data, void* peer, Dart_PeerFinalizer callback) : |
| 1871 data_(data), peer_(peer), callback_(callback) { | 1967 data_(data), peer_(peer), callback_(callback) { |
| 1872 } | 1968 } |
| 1873 ~ExternalStringData() { | 1969 ~ExternalStringData() { |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1929 } | 2025 } |
| 1930 RawTypeArguments* type_arguments_; | 2026 RawTypeArguments* type_arguments_; |
| 1931 RawSmi* length_; | 2027 RawSmi* length_; |
| 1932 // Variable length data follows here. | 2028 // Variable length data follows here. |
| 1933 RawObject** data() { OPEN_ARRAY_START(RawObject*, RawObject*); } | 2029 RawObject** data() { OPEN_ARRAY_START(RawObject*, RawObject*); } |
| 1934 RawObject* const* data() const { OPEN_ARRAY_START(RawObject*, RawObject*); } | 2030 RawObject* const* data() const { OPEN_ARRAY_START(RawObject*, RawObject*); } |
| 1935 RawObject** to(intptr_t length) { | 2031 RawObject** to(intptr_t length) { |
| 1936 return reinterpret_cast<RawObject**>(&ptr()->data()[length - 1]); | 2032 return reinterpret_cast<RawObject**>(&ptr()->data()[length - 1]); |
| 1937 } | 2033 } |
| 1938 | 2034 |
| 2035 friend class ArraySerializationCluster; | |
| 2036 friend class ArrayDeserializationCluster; | |
| 2037 friend class LinkedHashMapSerializationCluster; | |
| 2038 friend class LinkedHashMapDeserializationCluster; | |
| 2039 friend class Deserializer; | |
| 1939 friend class RawCode; | 2040 friend class RawCode; |
| 1940 friend class RawImmutableArray; | 2041 friend class RawImmutableArray; |
| 1941 friend class SnapshotReader; | 2042 friend class SnapshotReader; |
| 1942 friend class GrowableObjectArray; | 2043 friend class GrowableObjectArray; |
| 1943 friend class LinkedHashMap; | 2044 friend class LinkedHashMap; |
| 1944 friend class RawLinkedHashMap; | 2045 friend class RawLinkedHashMap; |
| 1945 friend class Object; | 2046 friend class Object; |
| 1946 friend class ICData; // For high performance access. | 2047 friend class ICData; // For high performance access. |
| 1947 friend class SubtypeTestCache; // For high performance access. | 2048 friend class SubtypeTestCache; // For high performance access. |
| 1948 }; | 2049 }; |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 1962 return reinterpret_cast<RawObject**>(&ptr()->type_arguments_); | 2063 return reinterpret_cast<RawObject**>(&ptr()->type_arguments_); |
| 1963 } | 2064 } |
| 1964 RawTypeArguments* type_arguments_; | 2065 RawTypeArguments* type_arguments_; |
| 1965 RawSmi* length_; | 2066 RawSmi* length_; |
| 1966 RawArray* data_; | 2067 RawArray* data_; |
| 1967 RawObject** to() { | 2068 RawObject** to() { |
| 1968 return reinterpret_cast<RawObject**>(&ptr()->data_); | 2069 return reinterpret_cast<RawObject**>(&ptr()->data_); |
| 1969 } | 2070 } |
| 1970 | 2071 |
| 1971 friend class SnapshotReader; | 2072 friend class SnapshotReader; |
| 2073 friend class GrowableObjectArraySerializationCluster; | |
| 2074 friend class GrowableObjectArrayDeserializationCluster; | |
| 1972 }; | 2075 }; |
| 1973 | 2076 |
| 1974 | 2077 |
| 1975 class RawLinkedHashMap : public RawInstance { | 2078 class RawLinkedHashMap : public RawInstance { |
| 1976 RAW_HEAP_OBJECT_IMPLEMENTATION(LinkedHashMap); | 2079 RAW_HEAP_OBJECT_IMPLEMENTATION(LinkedHashMap); |
| 1977 | 2080 |
| 1978 RawObject** from() { | 2081 RawObject** from() { |
| 1979 return reinterpret_cast<RawObject**>(&ptr()->type_arguments_); | 2082 return reinterpret_cast<RawObject**>(&ptr()->type_arguments_); |
| 1980 } | 2083 } |
| 1981 RawTypeArguments* type_arguments_; | 2084 RawTypeArguments* type_arguments_; |
| 1982 RawTypedData* index_; | 2085 RawTypedData* index_; |
| 1983 RawSmi* hash_mask_; | 2086 RawSmi* hash_mask_; |
| 1984 RawArray* data_; | 2087 RawArray* data_; |
| 1985 RawSmi* used_data_; | 2088 RawSmi* used_data_; |
| 1986 RawSmi* deleted_keys_; | 2089 RawSmi* deleted_keys_; |
| 1987 RawObject** to() { | 2090 RawObject** to() { |
| 1988 return reinterpret_cast<RawObject**>(&ptr()->deleted_keys_); | 2091 return reinterpret_cast<RawObject**>(&ptr()->deleted_keys_); |
| 1989 } | 2092 } |
| 1990 | 2093 |
| 1991 | |
| 1992 friend class SnapshotReader; | 2094 friend class SnapshotReader; |
| 2095 friend class LinkedHashMapSerializationCluster; | |
| 2096 friend class LinkedHashMapDeserializationCluster; | |
| 1993 }; | 2097 }; |
| 1994 | 2098 |
| 1995 | 2099 |
| 1996 class RawFloat32x4 : public RawInstance { | 2100 class RawFloat32x4 : public RawInstance { |
| 1997 RAW_HEAP_OBJECT_IMPLEMENTATION(Float32x4); | 2101 RAW_HEAP_OBJECT_IMPLEMENTATION(Float32x4); |
| 1998 | 2102 |
| 1999 ALIGN8 float value_[4]; | 2103 ALIGN8 float value_[4]; |
| 2000 | 2104 |
| 2001 friend class SnapshotReader; | 2105 friend class SnapshotReader; |
| 2106 | |
| 2002 public: | 2107 public: |
| 2003 float x() const { return value_[0]; } | 2108 float x() const { return value_[0]; } |
| 2004 float y() const { return value_[1]; } | 2109 float y() const { return value_[1]; } |
| 2005 float z() const { return value_[2]; } | 2110 float z() const { return value_[2]; } |
| 2006 float w() const { return value_[3]; } | 2111 float w() const { return value_[3]; } |
| 2007 }; | 2112 }; |
| 2008 COMPILE_ASSERT(sizeof(RawFloat32x4) == 24); | 2113 COMPILE_ASSERT(sizeof(RawFloat32x4) == 24); |
| 2009 | 2114 |
| 2010 | 2115 |
| 2011 class RawInt32x4 : public RawInstance { | 2116 class RawInt32x4 : public RawInstance { |
| 2012 RAW_HEAP_OBJECT_IMPLEMENTATION(Int32x4); | 2117 RAW_HEAP_OBJECT_IMPLEMENTATION(Int32x4); |
| 2013 | 2118 |
| 2014 ALIGN8 int32_t value_[4]; | 2119 ALIGN8 int32_t value_[4]; |
| 2015 | 2120 |
| 2016 friend class SnapshotReader; | 2121 friend class SnapshotReader; |
| 2122 | |
| 2017 public: | 2123 public: |
| 2018 int32_t x() const { return value_[0]; } | 2124 int32_t x() const { return value_[0]; } |
| 2019 int32_t y() const { return value_[1]; } | 2125 int32_t y() const { return value_[1]; } |
| 2020 int32_t z() const { return value_[2]; } | 2126 int32_t z() const { return value_[2]; } |
| 2021 int32_t w() const { return value_[3]; } | 2127 int32_t w() const { return value_[3]; } |
| 2022 }; | 2128 }; |
| 2023 COMPILE_ASSERT(sizeof(RawInt32x4) == 24); | 2129 COMPILE_ASSERT(sizeof(RawInt32x4) == 24); |
| 2024 | 2130 |
| 2025 | 2131 |
| 2026 class RawFloat64x2 : public RawInstance { | 2132 class RawFloat64x2 : public RawInstance { |
| 2027 RAW_HEAP_OBJECT_IMPLEMENTATION(Float64x2); | 2133 RAW_HEAP_OBJECT_IMPLEMENTATION(Float64x2); |
| 2028 | 2134 |
| 2029 ALIGN8 double value_[2]; | 2135 ALIGN8 double value_[2]; |
| 2030 | 2136 |
| 2031 friend class SnapshotReader; | 2137 friend class SnapshotReader; |
| 2138 | |
| 2032 public: | 2139 public: |
| 2033 double x() const { return value_[0]; } | 2140 double x() const { return value_[0]; } |
| 2034 double y() const { return value_[1]; } | 2141 double y() const { return value_[1]; } |
| 2035 }; | 2142 }; |
| 2036 COMPILE_ASSERT(sizeof(RawFloat64x2) == 24); | 2143 COMPILE_ASSERT(sizeof(RawFloat64x2) == 24); |
| 2037 | 2144 |
| 2038 | 2145 |
| 2039 // Define an aliases for intptr_t. | 2146 // Define an aliases for intptr_t. |
| 2040 #if defined(ARCH_IS_32_BIT) | 2147 #if defined(ARCH_IS_32_BIT) |
| 2041 #define kIntPtrCid kTypedDataInt32ArrayCid | 2148 #define kIntPtrCid kTypedDataInt32ArrayCid |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 2058 uint8_t* data() { OPEN_ARRAY_START(uint8_t, uint8_t); } | 2165 uint8_t* data() { OPEN_ARRAY_START(uint8_t, uint8_t); } |
| 2059 const uint8_t* data() const { OPEN_ARRAY_START(uint8_t, uint8_t); } | 2166 const uint8_t* data() const { OPEN_ARRAY_START(uint8_t, uint8_t); } |
| 2060 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->length_); } | 2167 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->length_); } |
| 2061 | 2168 |
| 2062 friend class Api; | 2169 friend class Api; |
| 2063 friend class Object; | 2170 friend class Object; |
| 2064 friend class Instance; | 2171 friend class Instance; |
| 2065 friend class SnapshotReader; | 2172 friend class SnapshotReader; |
| 2066 friend class ObjectPool; | 2173 friend class ObjectPool; |
| 2067 friend class RawObjectPool; | 2174 friend class RawObjectPool; |
| 2175 friend class TypedDataSerializationCluster; | |
| 2176 friend class TypedDataDeserializationCluster; | |
| 2177 friend class ObjectPoolSerializationCluster; | |
| 2178 friend class ObjectPoolDeserializationCluster; | |
| 2068 }; | 2179 }; |
| 2069 | 2180 |
| 2070 | 2181 |
| 2071 class RawExternalTypedData : public RawInstance { | 2182 class RawExternalTypedData : public RawInstance { |
| 2072 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalTypedData); | 2183 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalTypedData); |
| 2073 | 2184 |
| 2074 protected: | 2185 protected: |
| 2075 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->length_); } | 2186 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->length_); } |
| 2076 RawSmi* length_; | 2187 RawSmi* length_; |
| 2077 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->length_); } | 2188 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->length_); } |
| 2078 | 2189 |
| 2079 uint8_t* data_; | 2190 uint8_t* data_; |
| 2080 | 2191 |
| 2081 friend class TokenStream; | 2192 friend class TokenStream; |
| 2082 friend class RawTokenStream; | 2193 friend class RawTokenStream; |
| 2194 friend class ExternalTypedDataSerializationCluster; | |
| 2195 friend class ExternalTypedDataDeserializationCluster; | |
| 2083 }; | 2196 }; |
| 2084 | 2197 |
| 2085 // VM implementations of the basic types in the isolate. | 2198 // VM implementations of the basic types in the isolate. |
| 2086 class RawCapability : public RawInstance { | 2199 class RawCapability : public RawInstance { |
| 2087 RAW_HEAP_OBJECT_IMPLEMENTATION(Capability); | 2200 RAW_HEAP_OBJECT_IMPLEMENTATION(Capability); |
| 2088 uint64_t id_; | 2201 uint64_t id_; |
| 2089 }; | 2202 }; |
| 2090 | 2203 |
| 2091 | 2204 |
| 2092 class RawSendPort : public RawInstance { | 2205 class RawSendPort : public RawInstance { |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 2122 RawObject** from() { | 2235 RawObject** from() { |
| 2123 return reinterpret_cast<RawObject**>(&ptr()->code_array_); | 2236 return reinterpret_cast<RawObject**>(&ptr()->code_array_); |
| 2124 } | 2237 } |
| 2125 RawArray* code_array_; // Code object for each frame in the stack trace. | 2238 RawArray* code_array_; // Code object for each frame in the stack trace. |
| 2126 RawArray* pc_offset_array_; // Offset of PC for each frame. | 2239 RawArray* pc_offset_array_; // Offset of PC for each frame. |
| 2127 RawObject** to() { | 2240 RawObject** to() { |
| 2128 return reinterpret_cast<RawObject**>(&ptr()->pc_offset_array_); | 2241 return reinterpret_cast<RawObject**>(&ptr()->pc_offset_array_); |
| 2129 } | 2242 } |
| 2130 // False for pre-allocated stack trace (used in OOM and Stack overflow). | 2243 // False for pre-allocated stack trace (used in OOM and Stack overflow). |
| 2131 bool expand_inlined_; | 2244 bool expand_inlined_; |
| 2245 | |
| 2246 friend class StacktraceSerializationCluster; | |
| 2247 friend class StacktraceDeserializationCluster; | |
| 2132 }; | 2248 }; |
| 2133 | 2249 |
| 2134 | 2250 |
| 2135 // VM type for capturing JS regular expressions. | 2251 // VM type for capturing JS regular expressions. |
| 2136 class RawRegExp : public RawInstance { | 2252 class RawRegExp : public RawInstance { |
| 2137 RAW_HEAP_OBJECT_IMPLEMENTATION(RegExp); | 2253 RAW_HEAP_OBJECT_IMPLEMENTATION(RegExp); |
| 2138 | 2254 |
| 2139 RawObject** from() { | 2255 RawObject** from() { |
| 2140 return reinterpret_cast<RawObject**>(&ptr()->num_bracket_expressions_); | 2256 return reinterpret_cast<RawObject**>(&ptr()->num_bracket_expressions_); |
| 2141 } | 2257 } |
| 2142 RawSmi* num_bracket_expressions_; | 2258 RawSmi* num_bracket_expressions_; |
| 2143 RawString* pattern_; // Pattern to be used for matching. | 2259 RawString* pattern_; // Pattern to be used for matching. |
| 2144 RawFunction* one_byte_function_; | 2260 RawFunction* one_byte_function_; |
| 2145 RawFunction* two_byte_function_; | 2261 RawFunction* two_byte_function_; |
| 2146 RawFunction* external_one_byte_function_; | 2262 RawFunction* external_one_byte_function_; |
| 2147 RawFunction* external_two_byte_function_; | 2263 RawFunction* external_two_byte_function_; |
| 2148 RawTypedData* one_byte_bytecode_; | 2264 RawTypedData* one_byte_bytecode_; |
| 2149 RawTypedData* two_byte_bytecode_; | 2265 RawTypedData* two_byte_bytecode_; |
| 2150 RawObject** to() { | 2266 RawObject** to() { |
| 2151 return reinterpret_cast<RawObject**>(&ptr()->two_byte_bytecode_); | 2267 return reinterpret_cast<RawObject**>(&ptr()->two_byte_bytecode_); |
| 2152 } | 2268 } |
| 2153 | 2269 |
| 2154 intptr_t num_registers_; | 2270 intptr_t num_registers_; |
| 2155 | 2271 |
| 2156 // A bitfield with two fields: | 2272 // A bitfield with two fields: |
| 2157 // type: Uninitialized, simple or complex. | 2273 // type: Uninitialized, simple or complex. |
| 2158 // flags: Represents global/local, case insensitive, multiline. | 2274 // flags: Represents global/local, case insensitive, multiline. |
| 2159 int8_t type_flags_; | 2275 int8_t type_flags_; |
| 2276 | |
| 2277 friend class RegExpSerializationCluster; | |
| 2278 friend class RegExpDeserializationCluster; | |
| 2160 }; | 2279 }; |
| 2161 | 2280 |
| 2162 | 2281 |
| 2163 class RawWeakProperty : public RawInstance { | 2282 class RawWeakProperty : public RawInstance { |
| 2164 RAW_HEAP_OBJECT_IMPLEMENTATION(WeakProperty); | 2283 RAW_HEAP_OBJECT_IMPLEMENTATION(WeakProperty); |
| 2165 | 2284 |
| 2166 RawObject** from() { | 2285 RawObject** from() { |
| 2167 return reinterpret_cast<RawObject**>(&ptr()->key_); | 2286 return reinterpret_cast<RawObject**>(&ptr()->key_); |
| 2168 } | 2287 } |
| 2169 RawObject* key_; | 2288 RawObject* key_; |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2432 COMPILE_ASSERT(kExternalTypedDataInt8ArrayCid == | 2551 COMPILE_ASSERT(kExternalTypedDataInt8ArrayCid == |
| 2433 kTypedDataInt8ArrayViewCid + 15); | 2552 kTypedDataInt8ArrayViewCid + 15); |
| 2434 COMPILE_ASSERT(kByteBufferCid == kExternalTypedDataInt8ArrayCid + 14); | 2553 COMPILE_ASSERT(kByteBufferCid == kExternalTypedDataInt8ArrayCid + 14); |
| 2435 COMPILE_ASSERT(kNullCid == kByteBufferCid + 1); | 2554 COMPILE_ASSERT(kNullCid == kByteBufferCid + 1); |
| 2436 return (kNullCid - kTypedDataInt8ArrayCid); | 2555 return (kNullCid - kTypedDataInt8ArrayCid); |
| 2437 } | 2556 } |
| 2438 | 2557 |
| 2439 } // namespace dart | 2558 } // namespace dart |
| 2440 | 2559 |
| 2441 #endif // VM_RAW_OBJECT_H_ | 2560 #endif // VM_RAW_OBJECT_H_ |
| OLD | NEW |