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

Unified Diff: runtime/vm/raw_object.h

Issue 2032153003: Use clustered serialization for full snapshots. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: round2 Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/object_store.h ('k') | runtime/vm/raw_object_snapshot.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/raw_object.h
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 286a5f9899146e429cdb6afbba1364e45a600f26..8bd6c0560501c07e38da4f5251a2fcbb27033342 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -250,9 +250,11 @@ CLASS_LIST_TYPED_DATA(V)
} \
SNAPSHOT_WRITER_SUPPORT() \
HEAP_PROFILER_SUPPORT() \
+ friend class object##SerializationCluster; \
+ friend class object##DeserializationCluster; \
-// RawObject is the base class of all raw objects, even though it carries the
-// class_ field not all raw objects are allocated in the heap and thus cannot
+// RawObject is the base class of all raw objects; even though it carries the
+// tags_ field not all raw objects are allocated in the heap and thus cannot
// be dereferenced (e.g. RawSmi).
class RawObject {
public:
@@ -609,6 +611,7 @@ CLASS_LIST_TYPED_DATA(DEFINE_IS_CID)
friend class Api;
friend class ApiMessageReader; // GetClassId
+ friend class Serializer; // GetClassId
friend class Array;
friend class Bigint;
friend class ByteBuffer;
@@ -644,6 +647,7 @@ CLASS_LIST_TYPED_DATA(DEFINE_IS_CID)
friend class AssemblyInstructionsWriter;
friend class BlobInstructionsWriter;
friend class SnapshotReader;
+ friend class Deserializer;
friend class SnapshotWriter;
friend class String;
friend class Type; // GetClassId
@@ -730,6 +734,7 @@ class RawClass : public RawObject {
friend class RawInstance;
friend class RawInstructions;
friend class SnapshotReader;
+ friend class InstanceSerializationCluster;
};
@@ -829,7 +834,9 @@ class RawFunction : public RawObject {
// So that the SkippedCodeFunctions::DetachCode can null out the code fields.
friend class SkippedCodeFunctions;
friend class Class;
+
RAW_HEAP_OBJECT_IMPLEMENTATION(Function);
+
static bool ShouldVisitCode(RawCode* raw_code);
static bool CheckUsageCounter(RawFunction* raw_fun);
@@ -1161,6 +1168,7 @@ class RawCode : public RawObject {
friend class SkippedCodeFunctions;
friend class StackFrame;
friend class Profiler;
+ friend class FunctionDeserializationCluster;
};
@@ -1850,6 +1858,7 @@ class RawOneByteString : public RawString {
friend class ApiMessageReader;
friend class SnapshotReader;
+ friend class RODataSerializationCluster;
};
@@ -1861,6 +1870,7 @@ class RawTwoByteString : public RawString {
const uint16_t* data() const { OPEN_ARRAY_START(uint16_t, uint16_t); }
friend class SnapshotReader;
+ friend class RODataSerializationCluster;
};
@@ -1936,6 +1946,9 @@ class RawArray : public RawInstance {
return reinterpret_cast<RawObject**>(&ptr()->data()[length - 1]);
}
+ friend class LinkedHashMapSerializationCluster;
+ friend class LinkedHashMapDeserializationCluster;
+ friend class Deserializer;
friend class RawCode;
friend class RawImmutableArray;
friend class SnapshotReader;
@@ -1988,7 +2001,6 @@ class RawLinkedHashMap : public RawInstance {
return reinterpret_cast<RawObject**>(&ptr()->deleted_keys_);
}
-
friend class SnapshotReader;
};
@@ -1999,6 +2011,7 @@ class RawFloat32x4 : public RawInstance {
ALIGN8 float value_[4];
friend class SnapshotReader;
+
public:
float x() const { return value_[0]; }
float y() const { return value_[1]; }
@@ -2014,6 +2027,7 @@ class RawInt32x4 : public RawInstance {
ALIGN8 int32_t value_[4];
friend class SnapshotReader;
+
public:
int32_t x() const { return value_[0]; }
int32_t y() const { return value_[1]; }
@@ -2029,6 +2043,7 @@ class RawFloat64x2 : public RawInstance {
ALIGN8 double value_[2];
friend class SnapshotReader;
+
public:
double x() const { return value_[0]; }
double y() const { return value_[1]; }
@@ -2065,6 +2080,8 @@ class RawTypedData : public RawInstance {
friend class SnapshotReader;
friend class ObjectPool;
friend class RawObjectPool;
+ friend class ObjectPoolSerializationCluster;
+ friend class ObjectPoolDeserializationCluster;
};
« no previous file with comments | « runtime/vm/object_store.h ('k') | runtime/vm/raw_object_snapshot.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698