Commit 05169ec0 authored by Igor Sheludko's avatar Igor Sheludko Committed by V8 LUCI CQ

[ext-code-space] Fix spill slot check for objects from NEW_LO_SPACE

Bug: v8:11880, chromium:1296036
Change-Id: Ib27b144c8258218f3ae28a6692f97a8f35679fec
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3474675Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79174}
parent f03bf4c4
...@@ -1203,7 +1203,17 @@ void CommonFrame::IterateCompiledFrame(RootVisitor* v) const { ...@@ -1203,7 +1203,17 @@ void CommonFrame::IterateCompiledFrame(RootVisitor* v) const {
HeapObject forwarded = map_word.IsForwardingAddress() HeapObject forwarded = map_word.IsForwardingAddress()
? map_word.ToForwardingAddress() ? map_word.ToForwardingAddress()
: raw; : raw;
CHECK(forwarded.map(cage_base).IsMap()); bool is_self_forwarded =
forwarded.map_word(cage_base, kRelaxedLoad).ptr() ==
forwarded.address();
if (is_self_forwarded) {
// The object might be in a self-forwarding state if it's located
// in new large object space. GC will fix this at a later stage.
CHECK(BasicMemoryChunk::FromHeapObject(forwarded)
->InNewLargeObjectSpace());
} else {
CHECK(forwarded.map(cage_base).IsMap(cage_base));
}
} }
} }
} else { } else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment