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

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

Issue 1388543008: 1. Write the backing data array of a GrowableObjectArray as a reference (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: sync-to-tot Created 5 years, 2 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
« no previous file with comments | « runtime/vm/raw_object_snapshot.cc ('k') | runtime/vm/snapshot.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_SNAPSHOT_H_ 5 #ifndef VM_SNAPSHOT_H_
6 #define VM_SNAPSHOT_H_ 6 #define VM_SNAPSHOT_H_
7 7
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/allocation.h" 9 #include "vm/allocation.h"
10 #include "vm/bitfield.h" 10 #include "vm/bitfield.h"
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 // Returns the id for the object it it exists in the list. 786 // Returns the id for the object it it exists in the list.
787 intptr_t FindObject(RawObject* raw); 787 intptr_t FindObject(RawObject* raw);
788 788
789 // Exhaustively processes all unserialized objects in this list. 'writer' may 789 // Exhaustively processes all unserialized objects in this list. 'writer' may
790 // concurrently add more objects. 790 // concurrently add more objects.
791 void SerializeAll(ObjectVisitor* writer); 791 void SerializeAll(ObjectVisitor* writer);
792 792
793 // Restores the tags of all objects in this list. 793 // Restores the tags of all objects in this list.
794 void UnmarkAll() const; 794 void UnmarkAll() const;
795 795
796 // Set state of object in forward list.
797 void SetState(RawObject* raw, SerializeState state);
798
796 private: 799 private:
797 intptr_t first_object_id() const { return first_object_id_; } 800 intptr_t first_object_id() const { return first_object_id_; }
798 intptr_t next_object_id() const { return nodes_.length() + first_object_id_; } 801 intptr_t next_object_id() const { return nodes_.length() + first_object_id_; }
799 802
800 const intptr_t first_object_id_; 803 const intptr_t first_object_id_;
801 GrowableArray<Node*> nodes_; 804 GrowableArray<Node*> nodes_;
802 intptr_t first_unprocessed_object_id_; 805 intptr_t first_unprocessed_object_id_;
803 806
804 friend class FullSnapshotWriter; 807 friend class FullSnapshotWriter;
805 DISALLOW_COPY_AND_ASSIGN(ForwardList); 808 DISALLOW_COPY_AND_ASSIGN(ForwardList);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 884
882 public: 885 public:
883 // Snapshot kind. 886 // Snapshot kind.
884 Snapshot::Kind kind() const { return kind_; } 887 Snapshot::Kind kind() const { return kind_; }
885 888
886 // Serialize an object into the buffer. 889 // Serialize an object into the buffer.
887 void WriteObject(RawObject* raw); 890 void WriteObject(RawObject* raw);
888 891
889 uword GetObjectTags(RawObject* raw); 892 uword GetObjectTags(RawObject* raw);
890 893
894 intptr_t GetObjectId(RawObject* raw);
895
891 Exceptions::ExceptionType exception_type() const { 896 Exceptions::ExceptionType exception_type() const {
892 return exception_type_; 897 return exception_type_;
893 } 898 }
894 void set_exception_type(Exceptions::ExceptionType type) { 899 void set_exception_type(Exceptions::ExceptionType type) {
895 exception_type_ = type; 900 exception_type_ = type;
896 } 901 }
897 const char* exception_msg() const { return exception_msg_; } 902 const char* exception_msg() const { return exception_msg_; }
898 void set_exception_msg(const char* msg) { 903 void set_exception_msg(const char* msg) {
899 exception_msg_ = msg; 904 exception_msg_ = msg;
900 } 905 }
(...skipping 26 matching lines...) Expand all
927 } 932 }
928 933
929 bool CheckAndWritePredefinedObject(RawObject* raw); 934 bool CheckAndWritePredefinedObject(RawObject* raw);
930 bool HandleVMIsolateObject(RawObject* raw); 935 bool HandleVMIsolateObject(RawObject* raw);
931 936
932 void WriteClassId(RawClass* cls); 937 void WriteClassId(RawClass* cls);
933 void WriteStaticImplicitClosure(intptr_t object_id, 938 void WriteStaticImplicitClosure(intptr_t object_id,
934 RawFunction* func, 939 RawFunction* func,
935 intptr_t tags); 940 intptr_t tags);
936 void WriteObjectImpl(RawObject* raw, bool as_reference); 941 void WriteObjectImpl(RawObject* raw, bool as_reference);
937 void WriteObjectRef(RawObject* raw); 942 void WriteMarkedObjectImpl(RawObject* raw,
938 void WriteInlinedObject(RawObject* raw); 943 intptr_t tags,
944 intptr_t object_id,
945 bool as_reference);
939 void WriteForwardedObjects(); 946 void WriteForwardedObjects();
940 void ArrayWriteTo(intptr_t object_id, 947 void ArrayWriteTo(intptr_t object_id,
941 intptr_t array_kind, 948 intptr_t array_kind,
942 intptr_t tags, 949 intptr_t tags,
943 RawSmi* length, 950 RawSmi* length,
944 RawTypeArguments* type_arguments, 951 RawTypeArguments* type_arguments,
945 RawObject* data[]); 952 RawObject* data[],
953 bool as_reference);
946 RawFunction* IsSerializableClosure(RawClass* cls, RawObject* obj); 954 RawFunction* IsSerializableClosure(RawClass* cls, RawObject* obj);
947 RawClass* GetFunctionOwner(RawFunction* func); 955 RawClass* GetFunctionOwner(RawFunction* func);
948 void CheckForNativeFields(RawClass* cls); 956 void CheckForNativeFields(RawClass* cls);
949 void SetWriteException(Exceptions::ExceptionType type, const char* msg); 957 void SetWriteException(Exceptions::ExceptionType type, const char* msg);
950 void WriteInstance(intptr_t object_id, 958 void WriteInstance(RawObject* raw,
951 RawObject* raw,
952 RawClass* cls, 959 RawClass* cls,
953 intptr_t tags); 960 intptr_t tags,
954 void WriteInstanceRef(RawObject* raw, RawClass* cls); 961 intptr_t object_id,
962 bool as_reference);
955 bool AllowObjectsInDartLibrary(RawLibrary* library); 963 bool AllowObjectsInDartLibrary(RawLibrary* library);
956 intptr_t FindVmSnapshotObject(RawObject* rawobj); 964 intptr_t FindVmSnapshotObject(RawObject* rawobj);
957 965
958 void InitializeForwardList(ForwardList* forward_list) { 966 void InitializeForwardList(ForwardList* forward_list) {
959 ASSERT(forward_list_ == NULL); 967 ASSERT(forward_list_ == NULL);
960 forward_list_ = forward_list; 968 forward_list_ = forward_list;
961 } 969 }
962 void ResetForwardList() { 970 void ResetForwardList() {
963 ASSERT(forward_list_ != NULL); 971 ASSERT(forward_list_ != NULL);
964 forward_list_ = NULL; 972 forward_list_ = NULL;
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1126 private: 1134 private:
1127 SnapshotWriter* writer_; 1135 SnapshotWriter* writer_;
1128 bool as_references_; 1136 bool as_references_;
1129 1137
1130 DISALLOW_COPY_AND_ASSIGN(SnapshotWriterVisitor); 1138 DISALLOW_COPY_AND_ASSIGN(SnapshotWriterVisitor);
1131 }; 1139 };
1132 1140
1133 } // namespace dart 1141 } // namespace dart
1134 1142
1135 #endif // VM_SNAPSHOT_H_ 1143 #endif // VM_SNAPSHOT_H_
OLDNEW
« no previous file with comments | « runtime/vm/raw_object_snapshot.cc ('k') | runtime/vm/snapshot.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698