OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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_SERIALIZER_COMMON_H_ | 5 #ifndef V8_SNAPSHOT_SERIALIZER_COMMON_H_ |
6 #define V8_SNAPSHOT_SERIALIZER_COMMON_H_ | 6 #define V8_SNAPSHOT_SERIALIZER_COMMON_H_ |
7 | 7 |
8 #include "src/address-map.h" | 8 #include "src/address-map.h" |
9 #include "src/external-reference-table.h" | 9 #include "src/external-reference-table.h" |
10 #include "src/globals.h" | 10 #include "src/globals.h" |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 } | 264 } |
265 | 265 |
266 static const int kMagicNumberOffset = 0; | 266 static const int kMagicNumberOffset = 0; |
267 static const int kExtraExternalReferencesOffset = | 267 static const int kExtraExternalReferencesOffset = |
268 kMagicNumberOffset + kInt32Size; | 268 kMagicNumberOffset + kInt32Size; |
269 static const int kVersionHashOffset = | 269 static const int kVersionHashOffset = |
270 kExtraExternalReferencesOffset + kInt32Size; | 270 kExtraExternalReferencesOffset + kInt32Size; |
271 | 271 |
272 protected: | 272 protected: |
273 void SetHeaderValue(int offset, uint32_t value) { | 273 void SetHeaderValue(int offset, uint32_t value) { |
274 uint32_t* address = reinterpret_cast<uint32_t*>(data_ + offset); | 274 memcpy(data_ + offset, &value, sizeof(value)); |
275 memcpy(reinterpret_cast<uint32_t*>(address), &value, sizeof(value)); | |
276 } | 275 } |
277 | 276 |
278 uint32_t GetHeaderValue(int offset) const { | 277 uint32_t GetHeaderValue(int offset) const { |
279 uint32_t value; | 278 uint32_t value; |
280 memcpy(&value, reinterpret_cast<int*>(data_ + offset), sizeof(value)); | 279 memcpy(&value, data_ + offset, sizeof(value)); |
281 return value; | 280 return value; |
282 } | 281 } |
283 | 282 |
284 void AllocateData(int size); | 283 void AllocateData(int size); |
285 | 284 |
286 static uint32_t ComputeMagicNumber(Isolate* isolate) { | 285 static uint32_t ComputeMagicNumber(Isolate* isolate) { |
287 return ComputeMagicNumber(ExternalReferenceTable::instance(isolate)); | 286 return ComputeMagicNumber(ExternalReferenceTable::instance(isolate)); |
288 } | 287 } |
289 static uint32_t GetExtraReferences(Isolate* isolate) { | 288 static uint32_t GetExtraReferences(Isolate* isolate) { |
290 return GetExtraReferences(ExternalReferenceTable::instance(isolate)); | 289 return GetExtraReferences(ExternalReferenceTable::instance(isolate)); |
291 } | 290 } |
292 | 291 |
293 void SetMagicNumber(Isolate* isolate) { | 292 void SetMagicNumber(Isolate* isolate) { |
294 SetHeaderValue(kMagicNumberOffset, ComputeMagicNumber(isolate)); | 293 SetHeaderValue(kMagicNumberOffset, ComputeMagicNumber(isolate)); |
295 SetHeaderValue(kExtraExternalReferencesOffset, GetExtraReferences(isolate)); | 294 SetHeaderValue(kExtraExternalReferencesOffset, GetExtraReferences(isolate)); |
296 } | 295 } |
297 | 296 |
298 byte* data_; | 297 byte* data_; |
299 int size_; | 298 int size_; |
300 bool owns_data_; | 299 bool owns_data_; |
301 | 300 |
302 private: | 301 private: |
303 DISALLOW_COPY_AND_ASSIGN(SerializedData); | 302 DISALLOW_COPY_AND_ASSIGN(SerializedData); |
304 }; | 303 }; |
305 | 304 |
306 } // namespace internal | 305 } // namespace internal |
307 } // namespace v8 | 306 } // namespace v8 |
308 | 307 |
309 #endif // V8_SNAPSHOT_SERIALIZER_COMMON_H_ | 308 #endif // V8_SNAPSHOT_SERIALIZER_COMMON_H_ |
OLD | NEW |