Merge V8 5.3.332.45. DO NOT MERGE
Test: Manual
FPIIM-449
Change-Id: Id3254828b068abdea3cb10442e0172a8c9a98e03
(cherry picked from commit 13e2dadd00298019ed862f2b2fc5068bba730bcf)
diff --git a/src/snapshot/serializer.h b/src/snapshot/serializer.h
index f99cd72..45f891e 100644
--- a/src/snapshot/serializer.h
+++ b/src/snapshot/serializer.h
@@ -38,28 +38,29 @@
private:
class NameMap {
public:
- NameMap() : impl_(HashMap::PointersMatch) {}
+ NameMap() : impl_(base::HashMap::PointersMatch) {}
~NameMap() {
- for (HashMap::Entry* p = impl_.Start(); p != NULL; p = impl_.Next(p)) {
+ for (base::HashMap::Entry* p = impl_.Start(); p != NULL;
+ p = impl_.Next(p)) {
DeleteArray(static_cast<const char*>(p->value));
}
}
void Insert(Address code_address, const char* name, int name_size) {
- HashMap::Entry* entry = FindOrCreateEntry(code_address);
+ base::HashMap::Entry* entry = FindOrCreateEntry(code_address);
if (entry->value == NULL) {
entry->value = CopyName(name, name_size);
}
}
const char* Lookup(Address code_address) {
- HashMap::Entry* entry = FindEntry(code_address);
+ base::HashMap::Entry* entry = FindEntry(code_address);
return (entry != NULL) ? static_cast<const char*>(entry->value) : NULL;
}
void Remove(Address code_address) {
- HashMap::Entry* entry = FindEntry(code_address);
+ base::HashMap::Entry* entry = FindEntry(code_address);
if (entry != NULL) {
DeleteArray(static_cast<char*>(entry->value));
RemoveEntry(entry);
@@ -68,11 +69,11 @@
void Move(Address from, Address to) {
if (from == to) return;
- HashMap::Entry* from_entry = FindEntry(from);
+ base::HashMap::Entry* from_entry = FindEntry(from);
DCHECK(from_entry != NULL);
void* value = from_entry->value;
RemoveEntry(from_entry);
- HashMap::Entry* to_entry = FindOrCreateEntry(to);
+ base::HashMap::Entry* to_entry = FindOrCreateEntry(to);
DCHECK(to_entry->value == NULL);
to_entry->value = value;
}
@@ -89,20 +90,20 @@
return result;
}
- HashMap::Entry* FindOrCreateEntry(Address code_address) {
+ base::HashMap::Entry* FindOrCreateEntry(Address code_address) {
return impl_.LookupOrInsert(code_address,
ComputePointerHash(code_address));
}
- HashMap::Entry* FindEntry(Address code_address) {
+ base::HashMap::Entry* FindEntry(Address code_address) {
return impl_.Lookup(code_address, ComputePointerHash(code_address));
}
- void RemoveEntry(HashMap::Entry* entry) {
+ void RemoveEntry(base::HashMap::Entry* entry) {
impl_.Remove(entry->key, entry->hash);
}
- HashMap impl_;
+ base::HashMap impl_;
DISALLOW_COPY_AND_ASSIGN(NameMap);
};
@@ -119,7 +120,7 @@
// There can be only one serializer per V8 process.
class Serializer : public SerializerDeserializer {
public:
- Serializer(Isolate* isolate, SnapshotByteSink* sink);
+ explicit Serializer(Isolate* isolate);
~Serializer() override;
void EncodeReservations(List<SerializedData::Reservation>* out) const;
@@ -170,14 +171,18 @@
// 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);
+ // Returns true if the object was successfully serialized as hot object.
+ bool SerializeHotObject(HeapObject* obj, HowToCode how_to_code,
+ WhereToPoint where_to_point, int skip);
+
+ // Returns true if the object was successfully serialized as back reference.
+ bool SerializeBackReference(HeapObject* obj, HowToCode how_to_code,
+ WhereToPoint where_to_point, int skip);
inline void FlushSkip(int skip) {
if (skip != 0) {
- sink_->Put(kSkip, "SkipFromSerializeObject");
- sink_->PutInt(skip, "SkipDistanceFromSerializeObject");
+ sink_.Put(kSkip, "SkipFromSerializeObject");
+ sink_.PutInt(skip, "SkipDistanceFromSerializeObject");
}
}
@@ -207,7 +212,7 @@
return max_chunk_size_[space];
}
- SnapshotByteSink* sink() const { return sink_; }
+ const SnapshotByteSink* sink() const { return &sink_; }
void QueueDeferredObject(HeapObject* obj) {
DCHECK(reference_map_.Lookup(obj).is_back_reference());
@@ -218,7 +223,7 @@
Isolate* isolate_;
- SnapshotByteSink* sink_;
+ SnapshotByteSink sink_;
ExternalReferenceEncoder external_reference_encoder_;
SerializerReferenceMap reference_map_;