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

Side by Side Diff: runtime/vm/raw_object.h

Issue 1965823002: Initial isolate reload support (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 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
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_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 607 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 #endif // DEBUG 618 #endif // DEBUG
619 619
620 friend class Api; 620 friend class Api;
621 friend class ApiMessageReader; // GetClassId 621 friend class ApiMessageReader; // GetClassId
622 friend class Array; 622 friend class Array;
623 friend class Bigint; 623 friend class Bigint;
624 friend class ByteBuffer; 624 friend class ByteBuffer;
625 friend class Closure; 625 friend class Closure;
626 friend class Code; 626 friend class Code;
627 friend class Double; 627 friend class Double;
628 friend class ForwardPointersVisitor; // StorePointer
628 friend class FreeListElement; 629 friend class FreeListElement;
629 friend class Function; 630 friend class Function;
630 friend class GCMarker; 631 friend class GCMarker;
631 friend class ExternalTypedData; 632 friend class ExternalTypedData;
632 friend class ForwardList; 633 friend class ForwardList;
633 friend class GrowableObjectArray; // StorePointer 634 friend class GrowableObjectArray; // StorePointer
634 friend class Heap; 635 friend class Heap;
635 friend class HeapMapAsJSONVisitor; 636 friend class HeapMapAsJSONVisitor;
636 friend class ClassStatsVisitor; 637 friend class ClassStatsVisitor;
637 template<bool> friend class MarkingVisitorBase; 638 template<bool> friend class MarkingVisitorBase;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 int32_t instance_size_in_words_; // Size if fixed len or 0 if variable len. 729 int32_t instance_size_in_words_; // Size if fixed len or 0 if variable len.
729 int32_t type_arguments_field_offset_in_words_; // Offset of type args fld. 730 int32_t type_arguments_field_offset_in_words_; // Offset of type args fld.
730 int32_t next_field_offset_in_words_; // Offset of the next instance field. 731 int32_t next_field_offset_in_words_; // Offset of the next instance field.
731 classid_t id_; // Class Id, also index in the class table. 732 classid_t id_; // Class Id, also index in the class table.
732 int16_t num_type_arguments_; // Number of type arguments in flattened vector. 733 int16_t num_type_arguments_; // Number of type arguments in flattened vector.
733 int16_t num_own_type_arguments_; // Number of non-overlapping type arguments. 734 int16_t num_own_type_arguments_; // Number of non-overlapping type arguments.
734 uint16_t num_native_fields_; // Number of native fields in class. 735 uint16_t num_native_fields_; // Number of native fields in class.
735 uint16_t state_bits_; 736 uint16_t state_bits_;
736 737
737 friend class Instance; 738 friend class Instance;
739 friend class Isolate;
738 friend class Object; 740 friend class Object;
739 friend class RawInstance; 741 friend class RawInstance;
740 friend class RawInstructions; 742 friend class RawInstructions;
741 friend class SnapshotReader; 743 friend class SnapshotReader;
742 }; 744 };
743 745
744 746
745 class RawUnresolvedClass : public RawObject { 747 class RawUnresolvedClass : public RawObject {
746 RAW_HEAP_OBJECT_IMPLEMENTATION(UnresolvedClass); 748 RAW_HEAP_OBJECT_IMPLEMENTATION(UnresolvedClass);
747 749
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 case Snapshot::kInvalid: 1033 case Snapshot::kInvalid:
1032 break; 1034 break;
1033 } 1035 }
1034 UNREACHABLE(); 1036 UNREACHABLE();
1035 return NULL; 1037 return NULL;
1036 } 1038 }
1037 1039
1038 int32_t line_offset_; 1040 int32_t line_offset_;
1039 int32_t col_offset_; 1041 int32_t col_offset_;
1040 int8_t kind_; // Of type Kind. 1042 int8_t kind_; // Of type Kind.
1043 int64_t load_timestamp_;
1041 }; 1044 };
1042 1045
1043 1046
1044 class RawLibrary : public RawObject { 1047 class RawLibrary : public RawObject {
1045 enum LibraryState { 1048 enum LibraryState {
1046 kAllocated, // Initial state. 1049 kAllocated, // Initial state.
1047 kLoadRequested, // Compiler or script requested load of library. 1050 kLoadRequested, // Compiler or script requested load of library.
1048 kLoadInProgress, // Library is in the process of being loaded. 1051 kLoadInProgress, // Library is in the process of being loaded.
1049 kLoaded, // Library is loaded. 1052 kLoaded, // Library is loaded.
1050 kLoadError, // Error occurred during load of the Library. 1053 kLoadError, // Error occurred during load of the Library.
(...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after
1676 1679
1677 friend class ObjectStore; 1680 friend class ObjectStore;
1678 }; 1681 };
1679 1682
1680 1683
1681 class RawType : public RawAbstractType { 1684 class RawType : public RawAbstractType {
1682 private: 1685 private:
1683 RAW_HEAP_OBJECT_IMPLEMENTATION(Type); 1686 RAW_HEAP_OBJECT_IMPLEMENTATION(Type);
1684 1687
1685 RawObject** from() { 1688 RawObject** from() {
1686 return reinterpret_cast<RawObject**>(&ptr()->type_class_); 1689 return reinterpret_cast<RawObject**>(&ptr()->type_class_id_);
1687 } 1690 }
1688 RawObject* type_class_; // Either resolved class or unresolved class. 1691 // Either the id of the resolved class as a Smi or an UnresolvedClass.
1692 RawObject* type_class_id_;
1689 RawTypeArguments* arguments_; 1693 RawTypeArguments* arguments_;
1690 // This type object represents a function type if its signature field is a 1694 // This type object represents a function type if its signature field is a
1691 // non-null function object. 1695 // non-null function object.
1692 // If this type is malformed or malbounded, the signature field gets 1696 // If this type is malformed or malbounded, the signature field gets
1693 // overwritten by the error object in order to save space. If the type is a 1697 // overwritten by the error object in order to save space. If the type is a
1694 // function type, its signature is lost, but the message in the error object 1698 // function type, its signature is lost, but the message in the error object
1695 // can describe the issue without needing the signature. 1699 // can describe the issue without needing the signature.
1696 union { 1700 union {
1697 RawFunction* signature_; // If not null, this type is a function type. 1701 RawFunction* signature_; // If not null, this type is a function type.
1698 RawLanguageError* error_; // If not null, type is malformed or malbounded. 1702 RawLanguageError* error_; // If not null, type is malformed or malbounded.
(...skipping 18 matching lines...) Expand all
1717 return reinterpret_cast<RawObject**>(&ptr()->type_); 1721 return reinterpret_cast<RawObject**>(&ptr()->type_);
1718 } 1722 }
1719 }; 1723 };
1720 1724
1721 1725
1722 class RawTypeParameter : public RawAbstractType { 1726 class RawTypeParameter : public RawAbstractType {
1723 private: 1727 private:
1724 RAW_HEAP_OBJECT_IMPLEMENTATION(TypeParameter); 1728 RAW_HEAP_OBJECT_IMPLEMENTATION(TypeParameter);
1725 1729
1726 RawObject** from() { 1730 RawObject** from() {
1727 return reinterpret_cast<RawObject**>(&ptr()->parameterized_class_); 1731 return reinterpret_cast<RawObject**>(&ptr()->name_);
1728 } 1732 }
1729 RawClass* parameterized_class_;
1730 RawString* name_; 1733 RawString* name_;
1731 RawAbstractType* bound_; // ObjectType if no explicit bound specified. 1734 RawAbstractType* bound_; // ObjectType if no explicit bound specified.
1732 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->bound_); } 1735 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->bound_); }
1736 classid_t parameterized_class_id_;
1733 TokenPosition token_pos_; 1737 TokenPosition token_pos_;
1734 int16_t index_; 1738 int16_t index_;
1735 int8_t type_state_; 1739 int8_t type_state_;
1736 }; 1740 };
1737 1741
1738 1742
1739 class RawBoundedType : public RawAbstractType { 1743 class RawBoundedType : public RawAbstractType {
1740 private: 1744 private:
1741 RAW_HEAP_OBJECT_IMPLEMENTATION(BoundedType); 1745 RAW_HEAP_OBJECT_IMPLEMENTATION(BoundedType);
1742 1746
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after
2431 COMPILE_ASSERT(kExternalTypedDataInt8ArrayCid == 2435 COMPILE_ASSERT(kExternalTypedDataInt8ArrayCid ==
2432 kTypedDataInt8ArrayViewCid + 15); 2436 kTypedDataInt8ArrayViewCid + 15);
2433 COMPILE_ASSERT(kByteBufferCid == kExternalTypedDataInt8ArrayCid + 14); 2437 COMPILE_ASSERT(kByteBufferCid == kExternalTypedDataInt8ArrayCid + 14);
2434 COMPILE_ASSERT(kNullCid == kByteBufferCid + 1); 2438 COMPILE_ASSERT(kNullCid == kByteBufferCid + 1);
2435 return (kNullCid - kTypedDataInt8ArrayCid); 2439 return (kNullCid - kTypedDataInt8ArrayCid);
2436 } 2440 }
2437 2441
2438 } // namespace dart 2442 } // namespace dart
2439 2443
2440 #endif // VM_RAW_OBJECT_H_ 2444 #endif // VM_RAW_OBJECT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698