[snapshot] Fix mksnapshot with warmup script
This fixes an assertion failure in mksnapshot that when the read-only space is created for a second time, that its checksum should match the first time it was deserialized. However with warmup scripts in mksnapshot, the first run through doesn't deserialize it, but creates it from scratch. Then the next time through it deserializes it which it doesn't expect and so crashes as there is no checksum to compare it to. This fixes it by only checking if is a last_checksum (e.g. that it was deserialized). Additionally CHECK that we never attempt to create the objects from scratch if previously deserialized from a snapshot. Bug: v8:10320 Change-Id: I598e5298b68f45911e20533db91d7f24fea21045 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2102579 Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#66718}
This commit is contained in:
parent
0798746cb3
commit
5c7e24d736
@ -52,9 +52,12 @@ void ReadOnlyHeap::SetUp(Isolate* isolate, ReadOnlyDeserializer* des) {
|
||||
#ifdef DEBUG
|
||||
const base::Optional<uint32_t> last_checksum =
|
||||
shared_ro_heap_->read_only_blob_checksum_;
|
||||
if (last_checksum || des_checksum) {
|
||||
if (last_checksum) {
|
||||
// The read-only heap was set up from a snapshot. Make sure it's the always
|
||||
// the same snapshot.
|
||||
CHECK_WITH_MSG(des_checksum,
|
||||
"Attempt to create the read-only heap after "
|
||||
"already creating from a snapshot.");
|
||||
CHECK_EQ(last_checksum, des_checksum);
|
||||
} else {
|
||||
// The read-only heap objects were created. Make sure this happens only
|
||||
|
Loading…
Reference in New Issue
Block a user