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; |
}; |