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

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: . 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
Index: runtime/vm/raw_object.h
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 8f6f624160be228c177535c1b1b0afae06aad9e0..6df1f2357b0d945a8a86a05511ae627b1450fad6 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -609,6 +609,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 +645,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 +732,9 @@ class RawClass : public RawObject {
friend class RawInstance;
friend class RawInstructions;
friend class SnapshotReader;
+ friend class ClassSerializationCluster;
+ friend class ClassDeserializationCluster;
+ friend class InstanceSerializationCluster;
};
@@ -745,6 +750,9 @@ class RawUnresolvedClass : public RawObject {
return reinterpret_cast<RawObject**>(&ptr()->ident_);
}
TokenPosition token_pos_;
+
+ 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.
+ friend class UnresolvedClassDeserializationCluster;
};
@@ -776,6 +784,8 @@ class RawTypeArguments : public RawObject {
}
friend class SnapshotReader;
+ friend class TypeArgumentsSerializationCluster;
+ friend class TypeArgumentsDeserializationCluster;
};
@@ -794,6 +804,8 @@ class RawPatchClass : public RawObject {
}
friend class Function;
+ friend class PatchClassSerializationCluster;
+ friend class PatchClassDeserializationCluster;
};
@@ -829,7 +841,11 @@ class RawFunction : public RawObject {
// So that the SkippedCodeFunctions::DetachCode can null out the code fields.
friend class SkippedCodeFunctions;
friend class Class;
+ friend class FunctionSerializationCluster;
+ friend class FunctionDeserializationCluster;
+
RAW_HEAP_OBJECT_IMPLEMENTATION(Function);
+
static bool ShouldVisitCode(RawCode* raw_code);
static bool CheckUsageCounter(RawFunction* raw_fun);
@@ -884,6 +900,8 @@ class RawClosureData : public RawObject {
}
friend class Function;
+ friend class ClosureDataSerializationCluster;
+ friend class ClosureDataDeserializationCluster;
};
@@ -900,6 +918,9 @@ class RawRedirectionData : public RawObject {
RawObject** to() {
return reinterpret_cast<RawObject**>(&ptr()->target_);
}
+
+ friend class RedirectionDataSerializationCluster;
+ friend class RedirectionDataDeserializationCluster;
};
@@ -956,6 +977,9 @@ class RawField : public RawObject {
int8_t guarded_list_length_in_object_offset_;
uint8_t kind_bits_; // static, final, const, has initializer....
+
+ friend class FieldSerializationCluster;
+ friend class FieldDeserializationCluster;
};
@@ -973,6 +997,8 @@ class RawLiteralToken : public RawObject {
Token::Kind kind_; // The literal kind (string, integer, double).
friend class SnapshotReader;
+ friend class LiteralTokenSerializationCluster;
+ friend class LiteralTokenDeserializationCluster;
};
@@ -990,6 +1016,8 @@ class RawTokenStream : public RawObject {
}
friend class SnapshotReader;
+ friend class TokenStreamSerializationCluster;
+ friend class TokenStreamDeserializationCluster;
};
@@ -1032,6 +1060,9 @@ class RawScript : public RawObject {
int32_t col_offset_;
int8_t kind_; // Of type Kind.
int64_t load_timestamp_;
+
+ friend class ScriptSerializationCluster;
+ friend class ScriptDeserializationCluster;
};
@@ -1079,6 +1110,8 @@ class RawLibrary : public RawObject {
friend class Class;
friend class Isolate;
+ friend class LibrarySerializationCluster;
+ friend class LibraryDeserializationCluster;
};
@@ -1096,6 +1129,9 @@ class RawNamespace : public RawObject {
RawObject** to() {
return reinterpret_cast<RawObject**>(&ptr()->metadata_field_);
}
+
+ friend class NamespaceSerializationCluster;
+ friend class NamespaceDeserializationCluster;
};
@@ -1161,6 +1197,9 @@ class RawCode : public RawObject {
friend class SkippedCodeFunctions;
friend class StackFrame;
friend class Profiler;
+ friend class CodeSerializationCluster;
+ friend class CodeDeserializationCluster;
+ friend class FunctionDeserializationCluster;
};
@@ -1183,6 +1222,8 @@ class RawObjectPool : public RawObject {
friend class Object;
friend class SnapshotReader;
+ friend class ObjectPoolSerializationCluster;
+ friend class ObjectPoolDeserializationCluster;
};
@@ -1415,6 +1456,8 @@ class RawExceptionHandlers : public RawObject {
friend class Object;
friend class SnapshotReader;
+ friend class ExceptionHandlersSerializationCluster;
+ friend class ExceptionHandlersDeserializationCluster;
};
@@ -1436,6 +1479,8 @@ class RawContext : public RawObject {
}
friend class SnapshotReader;
+ friend class ContextSerializationCluster;
+ friend class ContextDeserializationCluster;
};
@@ -1480,6 +1525,8 @@ class RawContextScope : public RawObject {
friend class Object;
friend class RawClosureData;
friend class SnapshotReader;
+ friend class ContextScopeSerializationCluster;
+ friend class ContextScopeDeserializationCluster;
};
@@ -1519,6 +1566,9 @@ class RawICData : public RawObject {
intptr_t tag_; // Debugging, verifying that the icdata is assigned to the
// same instruction again. Store -1 or Instruction::Tag.
#endif
+
+ friend class ICDataSerializationCluster;
+ friend class ICDataDeserializationCluster;
};
@@ -1537,12 +1587,18 @@ class RawMegamorphicCache : public RawObject {
}
int32_t filled_entry_count_;
+
+ friend class MegamorphicCacheSerializationCluster;
+ friend class MegamorphicCacheDeserializationCluster;
};
class RawSubtypeTestCache : public RawObject {
RAW_HEAP_OBJECT_IMPLEMENTATION(SubtypeTestCache);
RawArray* cache_;
+
+ friend class SubtypeTestCacheSerializationCluster;
+ friend class SubtypeTestCacheDeserializationCluster;
};
@@ -1580,6 +1636,9 @@ class RawLanguageError : public RawError {
TokenPosition token_pos_; // Source position in script_.
bool report_after_token_; // Report message at or after the token.
int8_t kind_; // Of type LanguageError::Kind.
+
+ friend class LanguageErrorSerializationCluster;
+ friend class LanguageErrorDeserializationCluster;
};
@@ -1594,6 +1653,9 @@ class RawUnhandledException : public RawError {
RawObject** to() {
return reinterpret_cast<RawObject**>(&ptr()->stacktrace_);
}
+
+ friend class UnhandledExceptionSerializationCluster;
+ friend class UnhandledExceptionDeserializationCluster;
};
@@ -1614,6 +1676,9 @@ class RawUnwindError : public RawError {
class RawInstance : public RawObject {
RAW_HEAP_OBJECT_IMPLEMENTATION(Instance);
+
+ friend class InstanceSerializationCluster;
+ friend class InstanceDeserializationCluster;
};
@@ -1648,6 +1713,9 @@ class RawLibraryPrefix : public RawInstance {
uint16_t num_imports_; // Number of library entries in libraries_.
bool is_deferred_load_;
bool is_loaded_;
+
+ friend class LibraryPrefixSerializationCluster;
+ friend class LibraryPrefixDeserializationCluster;
};
@@ -1694,6 +1762,9 @@ class RawType : public RawAbstractType {
}
TokenPosition token_pos_;
int8_t type_state_;
+
+ friend class TypeSerializationCluster;
+ friend class TypeDeserializationCluster;
};
@@ -1708,6 +1779,9 @@ class RawTypeRef : public RawAbstractType {
RawObject** to() {
return reinterpret_cast<RawObject**>(&ptr()->type_);
}
+
+ friend class TypeRefSerializationCluster;
+ friend class TypeRefDeserializationCluster;
};
@@ -1726,6 +1800,9 @@ class RawTypeParameter : public RawAbstractType {
TokenPosition token_pos_;
int16_t index_;
int8_t type_state_;
+
+ friend class TypeParameterSerializationCluster;
+ friend class TypeParameterDeserializationCluster;
};
@@ -1743,6 +1820,9 @@ class RawBoundedType : public RawAbstractType {
RawObject** to() {
return reinterpret_cast<RawObject**>(&ptr()->type_parameter_);
}
+
+ friend class BoundedTypeSerializationCluster;
+ friend class BoundedTypeDeserializationCluster;
};
@@ -1777,6 +1857,9 @@ class RawClosure : public RawInstance {
RawObject** to() {
return reinterpret_cast<RawObject**>(&ptr()->context_);
}
+
+ friend class ClosureSerializationCluster;
+ friend class ClosureDeserializationCluster;
};
@@ -1802,6 +1885,8 @@ class RawMint : public RawInteger {
friend class Api;
friend class SnapshotReader;
+ friend class SmiMintSerializationCluster;
+ friend class SmiMintDeserializationCluster;
};
COMPILE_ASSERT(sizeof(RawMint) == 16);
@@ -1814,6 +1899,9 @@ class RawBigint : public RawInteger {
RawSmi* used_;
RawTypedData* digits_;
RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->digits_); }
+
+ friend class BigintSerializationCluster;
+ friend class BigintDeserializationCluster;
};
@@ -1824,6 +1912,8 @@ class RawDouble : public RawNumber {
friend class Api;
friend class SnapshotReader;
+ friend class DoubleSerializationCluster;
+ friend class DoubleDeserializationCluster;
};
COMPILE_ASSERT(sizeof(RawDouble) == 16);
@@ -1850,6 +1940,9 @@ class RawOneByteString : public RawString {
friend class ApiMessageReader;
friend class SnapshotReader;
+ friend class OneByteStringSerializationCluster;
+ friend class OneByteStringDeserializationCluster;
+ friend class RODataSerializationCluster;
};
@@ -1861,6 +1954,9 @@ class RawTwoByteString : public RawString {
const uint16_t* data() const { OPEN_ARRAY_START(uint16_t, uint16_t); }
friend class SnapshotReader;
+ friend class TwoByteStringSerializationCluster;
+ friend class TwoByteStringDeserializationCluster;
+ friend class RODataSerializationCluster;
};
@@ -1936,6 +2032,11 @@ class RawArray : public RawInstance {
return reinterpret_cast<RawObject**>(&ptr()->data()[length - 1]);
}
+ friend class ArraySerializationCluster;
+ friend class ArrayDeserializationCluster;
+ friend class LinkedHashMapSerializationCluster;
+ friend class LinkedHashMapDeserializationCluster;
+ friend class Deserializer;
friend class RawCode;
friend class RawImmutableArray;
friend class SnapshotReader;
@@ -1969,6 +2070,8 @@ class RawGrowableObjectArray : public RawInstance {
}
friend class SnapshotReader;
+ friend class GrowableObjectArraySerializationCluster;
+ friend class GrowableObjectArrayDeserializationCluster;
};
@@ -1988,8 +2091,9 @@ class RawLinkedHashMap : public RawInstance {
return reinterpret_cast<RawObject**>(&ptr()->deleted_keys_);
}
-
friend class SnapshotReader;
+ friend class LinkedHashMapSerializationCluster;
+ friend class LinkedHashMapDeserializationCluster;
};
@@ -1999,6 +2103,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 +2119,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 +2135,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 +2172,10 @@ class RawTypedData : public RawInstance {
friend class SnapshotReader;
friend class ObjectPool;
friend class RawObjectPool;
+ friend class TypedDataSerializationCluster;
+ friend class TypedDataDeserializationCluster;
+ friend class ObjectPoolSerializationCluster;
+ friend class ObjectPoolDeserializationCluster;
};
@@ -2080,6 +2191,8 @@ class RawExternalTypedData : public RawInstance {
friend class TokenStream;
friend class RawTokenStream;
+ friend class ExternalTypedDataSerializationCluster;
+ friend class ExternalTypedDataDeserializationCluster;
};
// VM implementations of the basic types in the isolate.
@@ -2129,6 +2242,9 @@ class RawStacktrace : public RawInstance {
}
// False for pre-allocated stack trace (used in OOM and Stack overflow).
bool expand_inlined_;
+
+ friend class StacktraceSerializationCluster;
+ friend class StacktraceDeserializationCluster;
};
@@ -2157,6 +2273,9 @@ class RawRegExp : public RawInstance {
// type: Uninitialized, simple or complex.
// flags: Represents global/local, case insensitive, multiline.
int8_t type_flags_;
+
+ friend class RegExpSerializationCluster;
+ friend class RegExpDeserializationCluster;
};

Powered by Google App Engine
This is Rietveld 408576698