Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(175)

Unified Diff: src/snapshot/serialize.h

Issue 1179873003: Serializer: support all alignment kinds. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix assertion conditional Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/heap/objects-visiting-inl.h ('k') | src/snapshot/serialize.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/snapshot/serialize.h
diff --git a/src/snapshot/serialize.h b/src/snapshot/serialize.h
index 089c323b7de7db8588fc666e43e27a1528cdf4d9..2a426a94f587de9e239fc87950afaec447e12f86 100644
--- a/src/snapshot/serialize.h
+++ b/src/snapshot/serialize.h
@@ -324,12 +324,14 @@ class SerializerDeserializer: public ObjectVisitor {
// 0x07 Unused (including 0x27, 0x47, 0x67).
// 0x08..0x0c Reference to previous object from space.
kBackref = 0x08,
+ // 0x0d Unused (including 0x2d, 0x4d, 0x6d).
// 0x0e Unused (including 0x2e, 0x4e, 0x6e).
// 0x0f Unused (including 0x2f, 0x4f, 0x6f).
// 0x10..0x14 Reference to previous object from space after skip.
kBackrefWithSkip = 0x10,
+ // 0x15 Unused (including 0x35, 0x55, 0x75).
// 0x16 Unused (including 0x36, 0x56, 0x76).
- // 0x17 Unused (including 0x37, 0x57, 0x77).
+ // 0x17 Misc (including 0x37, 0x57, 0x77).
// 0x18 Root array item.
kRootArray = 0x18,
// 0x19 Object in the partial snapshot cache.
@@ -384,14 +386,18 @@ class SerializerDeserializer: public ObjectVisitor {
// is an indication that the snapshot and the VM do not fit together.
// Examine the build process for architecture, version or configuration
// mismatches.
- static const int kSynchronize = 0x5d;
+ static const int kSynchronize = 0x17;
// Used for the source code of the natives, which is in the executable, but
// is referred to from external strings in the snapshot.
- static const int kNativesStringResource = 0x5e;
+ static const int kNativesStringResource = 0x37;
// Raw data of variable length.
- static const int kVariableRawData = 0x7d;
+ static const int kVariableRawData = 0x57;
// Repeats of variable length.
- static const int kVariableRepeat = 0x7e;
+ static const int kVariableRepeat = 0x77;
+ // Alignment prefixes 0x7d..0x7f
+ static const int kAlignmentPrefix = 0x7d;
+
+ // 0x5d..0x5f unused
// ---------- byte code range 0x80..0xff ----------
// First 32 root array items.
@@ -515,7 +521,8 @@ class Deserializer: public SerializerDeserializer {
magic_number_(data->GetMagicNumber()),
external_reference_table_(NULL),
deserialized_large_objects_(0),
- deserializing_user_code_(false) {
+ deserializing_user_code_(false),
+ next_alignment_(kWordAligned) {
DecodeReservation(data->Reservations());
}
@@ -602,6 +609,8 @@ class Deserializer: public SerializerDeserializer {
bool deserializing_user_code_;
+ AllocationAlignment next_alignment_;
+
DISALLOW_COPY_AND_ASSIGN(Deserializer);
};
@@ -706,6 +715,9 @@ class Serializer : public SerializerDeserializer {
void PutBackReference(HeapObject* object, BackReference reference);
+ // Emit alignment prefix if necessary, return required padding space in bytes.
+ int PutAlignmentPrefix(HeapObject* object);
+
// Returns true if the object was successfully serialized.
bool SerializeKnownObject(HeapObject* obj, HowToCode how_to_code,
WhereToPoint where_to_point, int skip);
« no previous file with comments | « src/heap/objects-visiting-inl.h ('k') | src/snapshot/serialize.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698