Chromium Code Reviews| Index: src/value-serializer.h |
| diff --git a/src/value-serializer.h b/src/value-serializer.h |
| index 433a6f72b0ebd8542f37a517e9a256070297c54a..1732c05dadf7ced7dba3baee75742e74a33d8d46 100644 |
| --- a/src/value-serializer.h |
| +++ b/src/value-serializer.h |
| @@ -11,7 +11,9 @@ |
| #include "include/v8.h" |
| #include "src/base/compiler-specific.h" |
| #include "src/base/macros.h" |
| +#include "src/identity-map.h" |
| #include "src/vector.h" |
| +#include "src/zone.h" |
| namespace v8 { |
| namespace internal { |
| @@ -32,7 +34,7 @@ enum class SerializationTag : uint8_t; |
| */ |
| class ValueSerializer { |
| public: |
| - ValueSerializer(); |
| + explicit ValueSerializer(Isolate* isolate); |
| ~ValueSerializer(); |
| /* |
| @@ -68,8 +70,26 @@ class ValueSerializer { |
| void WriteSmi(Smi* smi); |
| void WriteHeapNumber(HeapNumber* number); |
| void WriteString(Handle<String> string); |
| + Maybe<bool> WriteJSReceiver(Handle<JSReceiver> receiver) WARN_UNUSED_RESULT; |
| + Maybe<bool> WriteJSObject(Handle<JSObject> object) WARN_UNUSED_RESULT; |
| + /* |
| + * Reads the specified keys from the object and writes key-value pairs to the |
| + * buffer. Returns the number of keys actually written, which may be smaller |
| + * if some keys are not own properties when accessed. |
| + */ |
| + Maybe<uint32_t> WriteJSObjectProperties( |
| + Handle<JSObject> object, Handle<FixedArray> keys) WARN_UNUSED_RESULT; |
| + |
| + Isolate* const isolate_; |
| std::vector<uint8_t> buffer_; |
| + Zone zone_; |
| + |
| + // To avoid extra lookups in the identity map, ID+1 is actually stored in the |
| + // map (checking if the used identity is zero is the fast way of checking if |
| + // the entry is new). |
| + IdentityMap<uint32_t> id_map_; |
| + uint32_t next_id_ = 0; |
| DISALLOW_COPY_AND_ASSIGN(ValueSerializer); |
| }; |
| @@ -95,6 +115,7 @@ class ValueDeserializer { |
| private: |
| // Reading the wire format. |
| + Maybe<SerializationTag> PeekTag() const WARN_UNUSED_RESULT; |
| Maybe<SerializationTag> ReadTag() WARN_UNUSED_RESULT; |
| template <typename T> |
| Maybe<T> ReadVarint() WARN_UNUSED_RESULT; |
| @@ -107,11 +128,26 @@ class ValueDeserializer { |
| // The tag is assumed to have already been read. |
| MaybeHandle<String> ReadUtf8String() WARN_UNUSED_RESULT; |
| MaybeHandle<String> ReadTwoByteString() WARN_UNUSED_RESULT; |
| + MaybeHandle<JSObject> ReadJSObject() WARN_UNUSED_RESULT; |
| + |
| + /* |
| + * Reads key-value pairs into the object until the specified end tag is |
| + * encountered. If successful, returns the number of properties read. |
| + */ |
| + Maybe<uint32_t> ReadJSObjectProperties(Handle<JSObject> object, |
| + SerializationTag end_tag); |
| + |
| + // Manipulating the map from IDs to reified objects. |
| + bool HasObjectWithID(uint32_t id); |
| + MaybeHandle<JSReceiver> GetObjectWithID(uint32_t id); |
| + void AddObjectWithID(uint32_t id, Handle<JSReceiver> object); |
| Isolate* const isolate_; |
| const uint8_t* position_; |
| const uint8_t* const end_; |
| uint32_t version_ = 0; |
| + Handle<SeededNumberDictionary> id_map_; // always a global handle |
|
Jakob Kummerow
2016/08/17 13:00:15
nit: Capitalization and punctuation please.
jbroman
2016/08/17 14:05:09
Done.
|
| + uint32_t next_id_ = 0; |
| DISALLOW_COPY_AND_ASSIGN(ValueDeserializer); |
| }; |