| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_SNAPSHOT_SERIALIZE_H_ | 5 #ifndef V8_SNAPSHOT_SERIALIZE_H_ |
| 6 #define V8_SNAPSHOT_SERIALIZE_H_ | 6 #define V8_SNAPSHOT_SERIALIZE_H_ |
| 7 | 7 |
| 8 #include "src/hashmap.h" | 8 #include "src/hashmap.h" |
| 9 #include "src/heap-profiler.h" | |
| 10 #include "src/isolate.h" | 9 #include "src/isolate.h" |
| 11 #include "src/snapshot/snapshot-source-sink.h" | 10 #include "src/snapshot/snapshot-source-sink.h" |
| 12 | 11 |
| 13 namespace v8 { | 12 namespace v8 { |
| 14 namespace internal { | 13 namespace internal { |
| 15 | 14 |
| 16 class ScriptData; | 15 class ScriptData; |
| 17 | 16 |
| 18 static const int kDeoptTableSerializeEntryCount = 64; | 17 static const int kDeoptTableSerializeEntryCount = 64; |
| 19 | 18 |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 | 148 |
| 150 static BackReference GlobalProxyReference() { | 149 static BackReference GlobalProxyReference() { |
| 151 return BackReference(kGlobalProxyValue); | 150 return BackReference(kGlobalProxyValue); |
| 152 } | 151 } |
| 153 | 152 |
| 154 static BackReference LargeObjectReference(uint32_t index) { | 153 static BackReference LargeObjectReference(uint32_t index) { |
| 155 return BackReference(SpaceBits::encode(LO_SPACE) | | 154 return BackReference(SpaceBits::encode(LO_SPACE) | |
| 156 ChunkOffsetBits::encode(index)); | 155 ChunkOffsetBits::encode(index)); |
| 157 } | 156 } |
| 158 | 157 |
| 158 static BackReference DummyReference() { return BackReference(kDummyValue); } |
| 159 |
| 159 static BackReference Reference(AllocationSpace space, uint32_t chunk_index, | 160 static BackReference Reference(AllocationSpace space, uint32_t chunk_index, |
| 160 uint32_t chunk_offset) { | 161 uint32_t chunk_offset) { |
| 161 DCHECK(IsAligned(chunk_offset, kObjectAlignment)); | 162 DCHECK(IsAligned(chunk_offset, kObjectAlignment)); |
| 162 DCHECK_NE(LO_SPACE, space); | 163 DCHECK_NE(LO_SPACE, space); |
| 163 return BackReference( | 164 return BackReference( |
| 164 SpaceBits::encode(space) | ChunkIndexBits::encode(chunk_index) | | 165 SpaceBits::encode(space) | ChunkIndexBits::encode(chunk_index) | |
| 165 ChunkOffsetBits::encode(chunk_offset >> kObjectAlignmentBits)); | 166 ChunkOffsetBits::encode(chunk_offset >> kObjectAlignmentBits)); |
| 166 } | 167 } |
| 167 | 168 |
| 168 bool is_valid() const { return bitfield_ != kInvalidValue; } | 169 bool is_valid() const { return bitfield_ != kInvalidValue; } |
| (...skipping 25 matching lines...) Expand all Loading... |
| 194 DCHECK(is_valid()); | 195 DCHECK(is_valid()); |
| 195 return bitfield_ & (ChunkOffsetBits::kMask | ChunkIndexBits::kMask); | 196 return bitfield_ & (ChunkOffsetBits::kMask | ChunkIndexBits::kMask); |
| 196 } | 197 } |
| 197 | 198 |
| 198 uint32_t bitfield() const { return bitfield_; } | 199 uint32_t bitfield() const { return bitfield_; } |
| 199 | 200 |
| 200 private: | 201 private: |
| 201 static const uint32_t kInvalidValue = 0xFFFFFFFF; | 202 static const uint32_t kInvalidValue = 0xFFFFFFFF; |
| 202 static const uint32_t kSourceValue = 0xFFFFFFFE; | 203 static const uint32_t kSourceValue = 0xFFFFFFFE; |
| 203 static const uint32_t kGlobalProxyValue = 0xFFFFFFFD; | 204 static const uint32_t kGlobalProxyValue = 0xFFFFFFFD; |
| 205 static const uint32_t kDummyValue = 0xFFFFFFFC; |
| 204 static const int kChunkOffsetSize = kPageSizeBits - kObjectAlignmentBits; | 206 static const int kChunkOffsetSize = kPageSizeBits - kObjectAlignmentBits; |
| 205 static const int kChunkIndexSize = 32 - kChunkOffsetSize - kSpaceTagSize; | 207 static const int kChunkIndexSize = 32 - kChunkOffsetSize - kSpaceTagSize; |
| 206 | 208 |
| 207 public: | 209 public: |
| 208 static const int kMaxChunkIndex = (1 << kChunkIndexSize) - 1; | 210 static const int kMaxChunkIndex = (1 << kChunkIndexSize) - 1; |
| 209 | 211 |
| 210 private: | 212 private: |
| 211 class ChunkOffsetBits : public BitField<uint32_t, 0, kChunkOffsetSize> {}; | 213 class ChunkOffsetBits : public BitField<uint32_t, 0, kChunkOffsetSize> {}; |
| 212 class ChunkIndexBits | 214 class ChunkIndexBits |
| 213 : public BitField<uint32_t, ChunkOffsetBits::kNext, kChunkIndexSize> {}; | 215 : public BitField<uint32_t, ChunkOffsetBits::kNext, kChunkIndexSize> {}; |
| (...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1047 static const int kNumReservationsOffset = kFlagHashOffset + kInt32Size; | 1049 static const int kNumReservationsOffset = kFlagHashOffset + kInt32Size; |
| 1048 static const int kNumCodeStubKeysOffset = kNumReservationsOffset + kInt32Size; | 1050 static const int kNumCodeStubKeysOffset = kNumReservationsOffset + kInt32Size; |
| 1049 static const int kPayloadLengthOffset = kNumCodeStubKeysOffset + kInt32Size; | 1051 static const int kPayloadLengthOffset = kNumCodeStubKeysOffset + kInt32Size; |
| 1050 static const int kChecksum1Offset = kPayloadLengthOffset + kInt32Size; | 1052 static const int kChecksum1Offset = kPayloadLengthOffset + kInt32Size; |
| 1051 static const int kChecksum2Offset = kChecksum1Offset + kInt32Size; | 1053 static const int kChecksum2Offset = kChecksum1Offset + kInt32Size; |
| 1052 static const int kHeaderSize = kChecksum2Offset + kInt32Size; | 1054 static const int kHeaderSize = kChecksum2Offset + kInt32Size; |
| 1053 }; | 1055 }; |
| 1054 } } // namespace v8::internal | 1056 } } // namespace v8::internal |
| 1055 | 1057 |
| 1056 #endif // V8_SNAPSHOT_SERIALIZE_H_ | 1058 #endif // V8_SNAPSHOT_SERIALIZE_H_ |
| OLD | NEW |