Index: src/snapshot/serializer-common.h |
diff --git a/src/snapshot/serializer-common.h b/src/snapshot/serializer-common.h |
index b426efd538e99384dea8f8088ee61094b154752e..dfe58245b4e9b26780f2f7b704d5476edd7aafc5 100644 |
--- a/src/snapshot/serializer-common.h |
+++ b/src/snapshot/serializer-common.h |
@@ -245,14 +245,20 @@ class SerializedData { |
} |
uint32_t GetMagicNumber() const { return GetHeaderValue(kMagicNumberOffset); } |
+ uint32_t GetExtraReferences() const { |
+ return GetHeaderValue(kExtraExternalReferencesOffset); |
+ } |
class ChunkSizeBits : public BitField<uint32_t, 0, 31> {}; |
class IsLastChunkBits : public BitField<bool, 31, 1> {}; |
static uint32_t ComputeMagicNumber(ExternalReferenceTable* table) { |
- uint32_t external_refs = table->size(); |
+ uint32_t external_refs = table->size() - table->num_api_references(); |
return 0xC0DE0000 ^ external_refs; |
} |
+ static uint32_t GetExtraReferences(ExternalReferenceTable* table) { |
+ return table->num_api_references(); |
+ } |
protected: |
void SetHeaderValue(int offset, uint32_t value) { |
@@ -271,12 +277,18 @@ class SerializedData { |
static uint32_t ComputeMagicNumber(Isolate* isolate) { |
return ComputeMagicNumber(ExternalReferenceTable::instance(isolate)); |
} |
+ static uint32_t GetExtraReferences(Isolate* isolate) { |
+ return GetExtraReferences(ExternalReferenceTable::instance(isolate)); |
+ } |
void SetMagicNumber(Isolate* isolate) { |
SetHeaderValue(kMagicNumberOffset, ComputeMagicNumber(isolate)); |
+ SetHeaderValue(kExtraExternalReferencesOffset, GetExtraReferences(isolate)); |
} |
static const int kMagicNumberOffset = 0; |
+ static const int kExtraExternalReferencesOffset = |
+ kMagicNumberOffset + kInt32Size; |
byte* data_; |
int size_; |