Index: src/serialize.h |
diff --git a/src/serialize.h b/src/serialize.h |
index 47a244f7c584c9125dd11a4ffde8e2710cd2ee2f..df6723c684658529446d845994293c1bdb03680c 100644 |
--- a/src/serialize.h |
+++ b/src/serialize.h |
@@ -264,7 +264,7 @@ class Deserializer: public SerializerDeserializer { |
DCHECK(space >= 0); |
DCHECK(space < kNumberOfSpaces); |
DCHECK(space == LO_SPACE || |
- chunk < static_cast<uint32_t>(Page::kMaxRegularHeapObjectSize)); |
+ chunk <= static_cast<uint32_t>(Page::kMaxRegularHeapObjectSize)); |
reservations_[space].Add({chunk, NULL, NULL}); |
} |
@@ -619,17 +619,21 @@ class CodeSerializer : public Serializer { |
static const int kSourceObjectIndex = 0; |
static const int kCodeStubsBaseIndex = 1; |
- String* source() { |
+ String* source() const { |
DCHECK(!AllowHeapAllocation::IsAllowed()); |
return source_; |
} |
List<uint32_t>* stub_keys() { return &stub_keys_; } |
+ int num_internalized_strings() const { return num_internalized_strings_; } |
private: |
CodeSerializer(Isolate* isolate, SnapshotByteSink* sink, String* source, |
Code* main_code) |
- : Serializer(isolate, sink), source_(source), main_code_(main_code) { |
+ : Serializer(isolate, sink), |
+ source_(source), |
+ main_code_(main_code), |
+ num_internalized_strings_(0) { |
set_root_index_wave_front(Heap::kStrongRootListLength); |
InitializeCodeAddressMap(); |
} |
@@ -652,6 +656,7 @@ class CodeSerializer : public Serializer { |
DisallowHeapAllocation no_gc_; |
String* source_; |
Code* main_code_; |
+ int num_internalized_strings_; |
List<uint32_t> stub_keys_; |
DISALLOW_COPY_AND_ASSIGN(CodeSerializer); |
}; |
@@ -694,6 +699,10 @@ class SerializedCodeData { |
DISALLOW_COPY_AND_ASSIGN(Reservation); |
}; |
+ int NumInternalizedStrings() const { |
+ return GetHeaderValue(kNumInternalizedStringsOffset); |
+ } |
+ |
Vector<const Reservation> Reservations() const { |
return Vector<const Reservation>(reinterpret_cast<const Reservation*>( |
script_data_->data() + kHeaderSize), |
@@ -737,13 +746,15 @@ class SerializedCodeData { |
// The data header consists of int-sized entries: |
// [0] version hash |
- // [1] number of code stub keys |
- // [2] payload length |
- // [3..9] reservation sizes for spaces from NEW_SPACE to PROPERTY_CELL_SPACE. |
+ // [1] number of internalized strings |
+ // [2] number of code stub keys |
+ // [3] payload length |
+ // [4..10] reservation sizes for spaces from NEW_SPACE to PROPERTY_CELL_SPACE. |
static const int kCheckSumOffset = 0; |
- static const int kReservationsOffset = 1; |
- static const int kNumCodeStubKeysOffset = 2; |
- static const int kPayloadLengthOffset = 3; |
+ static const int kNumInternalizedStringsOffset = 1; |
+ static const int kReservationsOffset = 2; |
+ static const int kNumCodeStubKeysOffset = 3; |
+ static const int kPayloadLengthOffset = 4; |
static const int kHeaderSize = (kPayloadLengthOffset + 1) * kIntSize; |
class ChunkSizeBits : public BitField<uint32_t, 0, 31> {}; |