[dumpling] maglev dumping [v8/v8 : main]

0 views
Skip to first unread message

Danylo Mocherniuk (Gerrit)

unread,
Dec 31, 2025, 5:57:05 AM (9 days ago) 12/31/25
to Danylo Mocherniuk, Leszek Swirski, dmercadi...@chromium.org, leszek...@chromium.org, v8-flag...@chromium.org, v8-re...@googlegroups.com, verwaes...@chromium.org, victorgo...@chromium.org
Attention needed from Danylo Mocherniuk and Leszek Swirski

Danylo Mocherniuk voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • Danylo Mocherniuk
  • Leszek Swirski
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: v8/v8
Gerrit-Branch: main
Gerrit-Change-Id: Iacd6f4a976753c4459c68d82a0e4ac8e6f6d3aef
Gerrit-Change-Number: 7352257
Gerrit-PatchSet: 14
Gerrit-Owner: Danylo Mocherniuk <mda...@google.com>
Gerrit-Reviewer: Danylo Mocherniuk <mda...@chromium.org>
Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
Gerrit-Attention: Danylo Mocherniuk <mda...@google.com>
Gerrit-Attention: Leszek Swirski <les...@chromium.org>
Gerrit-Comment-Date: Wed, 31 Dec 2025 10:57:00 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
unsatisfied_requirement
open
diffy

Leszek Swirski (Gerrit)

unread,
Jan 2, 2026, 4:56:16 AM (7 days ago) Jan 2
to Danylo Mocherniuk, Danylo Mocherniuk, V8 LUCI CQ, dmercadi...@chromium.org, leszek...@chromium.org, v8-flag...@chromium.org, v8-re...@googlegroups.com, verwaes...@chromium.org, victorgo...@chromium.org
Attention needed from Danylo Mocherniuk and Danylo Mocherniuk

Leszek Swirski added 1 comment

Patchset-level comments
File-level comment, Patchset 14 (Latest):
Leszek Swirski . resolved

Can you expand a bit on what this does, how it works, etc? Are you actually deoptimizing the optimized code, or do you only want to print what the interpreter values would have been if you had deoptimized it?

Open in Gerrit

Related details

Attention is currently required from:
  • Danylo Mocherniuk
  • Danylo Mocherniuk
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: v8/v8
Gerrit-Branch: main
Gerrit-Change-Id: Iacd6f4a976753c4459c68d82a0e4ac8e6f6d3aef
Gerrit-Change-Number: 7352257
Gerrit-PatchSet: 14
Gerrit-Owner: Danylo Mocherniuk <mda...@google.com>
Gerrit-Reviewer: Danylo Mocherniuk <mda...@chromium.org>
Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
Gerrit-Attention: Danylo Mocherniuk <mda...@google.com>
Gerrit-Attention: Danylo Mocherniuk <mda...@chromium.org>
Gerrit-Comment-Date: Fri, 02 Jan 2026 09:56:12 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
unsatisfied_requirement
open
diffy

Danylo Mocherniuk (Gerrit)

unread,
Jan 2, 2026, 10:39:03 AM (7 days ago) Jan 2
to Danylo Mocherniuk, V8 LUCI CQ, Leszek Swirski, dmercadi...@chromium.org, leszek...@chromium.org, v8-flag...@chromium.org, v8-re...@googlegroups.com, verwaes...@chromium.org, victorgo...@chromium.org
Attention needed from Danylo Mocherniuk and Leszek Swirski

Danylo Mocherniuk added 1 comment

Patchset-level comments
Leszek Swirski . resolved

Can you expand a bit on what this does, how it works, etc? Are you actually deoptimizing the optimized code, or do you only want to print what the interpreter values would have been if you had deoptimized it?

Danylo Mocherniuk

Added the explanation to the CL description. Also modified code a bit since your comment.

Open in Gerrit

Related details

Attention is currently required from:
  • Danylo Mocherniuk
  • Leszek Swirski
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: v8/v8
Gerrit-Branch: main
Gerrit-Change-Id: Iacd6f4a976753c4459c68d82a0e4ac8e6f6d3aef
Gerrit-Change-Number: 7352257
Gerrit-PatchSet: 20
Gerrit-Owner: Danylo Mocherniuk <mda...@google.com>
Gerrit-Reviewer: Danylo Mocherniuk <mda...@chromium.org>
Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
Gerrit-Attention: Danylo Mocherniuk <mda...@google.com>
Gerrit-Attention: Leszek Swirski <les...@chromium.org>
Gerrit-Comment-Date: Fri, 02 Jan 2026 15:38:58 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Leszek Swirski <les...@chromium.org>
unsatisfied_requirement
open
diffy

Leszek Swirski (Gerrit)

unread,
Jan 2, 2026, 11:34:27 AM (7 days ago) Jan 2
to Danylo Mocherniuk, Danylo Mocherniuk, V8 LUCI CQ, dmercadi...@chromium.org, leszek...@chromium.org, v8-flag...@chromium.org, v8-re...@googlegroups.com, verwaes...@chromium.org, victorgo...@chromium.org
Attention needed from Danylo Mocherniuk

Leszek Swirski added 1 comment

Patchset-level comments
File-level comment, Patchset 14:
Leszek Swirski . unresolved

Can you expand a bit on what this does, how it works, etc? Are you actually deoptimizing the optimized code, or do you only want to print what the interpreter values would have been if you had deoptimized it?

Danylo Mocherniuk

Added the explanation to the CL description. Also modified code a bit since your comment.

Leszek Swirski

I don't feel good about this approach -- it's hooking pretty intrusively into the deoptimisation, and effectively doing this weird kind of half-deopt, writing it to the stack, and then undoing it by smashing over the deopted stack with the old optimized stack? I don't think this is even GC safe, if `MaterializeHeapObjects` triggers a GC then the saved stack in dumpling will be invalid (since objects could have moved).

I don't think you can, or should, get around using a separate Dumpling Deoptimizer-like class, which has its own TranslatedState initialisation and TranslattedFrame iteration. Then, you can do your own register state copy into that DumplingDeoptimizer (much like you're already copying registers into dumpling), and you can then simply drop that frame afterward, instead of trying to save state, deoptimize, print, and then restore state. This would be more consistent with what e.g. the debugger does -- it will cost a bit of duplicate logic but result in a much clearer separation of concerns.

Open in Gerrit

Related details

Attention is currently required from:
  • Danylo Mocherniuk
Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Iacd6f4a976753c4459c68d82a0e4ac8e6f6d3aef
    Gerrit-Change-Number: 7352257
    Gerrit-PatchSet: 21
    Gerrit-Owner: Danylo Mocherniuk <mda...@google.com>
    Gerrit-Reviewer: Danylo Mocherniuk <mda...@chromium.org>
    Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
    Gerrit-Attention: Danylo Mocherniuk <mda...@chromium.org>
    Gerrit-Comment-Date: Fri, 02 Jan 2026 16:34:22 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Danylo Mocherniuk <mda...@chromium.org>
    Comment-In-Reply-To: Leszek Swirski <les...@chromium.org>
    unsatisfied_requirement
    open
    diffy

    Danylo Mocherniuk (Gerrit)

    unread,
    Jan 5, 2026, 2:13:34 AM (4 days ago) Jan 5
    to Danylo Mocherniuk, V8 LUCI CQ, Leszek Swirski, dmercadi...@chromium.org, leszek...@chromium.org, v8-flag...@chromium.org, v8-re...@googlegroups.com, verwaes...@chromium.org, victorgo...@chromium.org
    Attention needed from Danylo Mocherniuk and Leszek Swirski

    Danylo Mocherniuk added 1 comment

    Patchset-level comments
    Leszek Swirski . unresolved

    Can you expand a bit on what this does, how it works, etc? Are you actually deoptimizing the optimized code, or do you only want to print what the interpreter values would have been if you had deoptimized it?

    Danylo Mocherniuk

    Added the explanation to the CL description. Also modified code a bit since your comment.

    Leszek Swirski

    I don't feel good about this approach -- it's hooking pretty intrusively into the deoptimisation, and effectively doing this weird kind of half-deopt, writing it to the stack, and then undoing it by smashing over the deopted stack with the old optimized stack? I don't think this is even GC safe, if `MaterializeHeapObjects` triggers a GC then the saved stack in dumpling will be invalid (since objects could have moved).

    I don't think you can, or should, get around using a separate Dumpling Deoptimizer-like class, which has its own TranslatedState initialisation and TranslattedFrame iteration. Then, you can do your own register state copy into that DumplingDeoptimizer (much like you're already copying registers into dumpling), and you can then simply drop that frame afterward, instead of trying to save state, deoptimize, print, and then restore state. This would be more consistent with what e.g. the debugger does -- it will cost a bit of duplicate logic but result in a much clearer separation of concerns.

    Danylo Mocherniuk

    Ok, thanks for suggesting the alternative approach with DumplingDeoptimizer, I'll try it.

    You've got the idea right and I agree it is not GC safe, original code had some hacks to disable GC during this, now I know why they needed it.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Danylo Mocherniuk
    • Leszek Swirski
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Iacd6f4a976753c4459c68d82a0e4ac8e6f6d3aef
    Gerrit-Change-Number: 7352257
    Gerrit-PatchSet: 21
    Gerrit-Owner: Danylo Mocherniuk <mda...@google.com>
    Gerrit-Reviewer: Danylo Mocherniuk <mda...@chromium.org>
    Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
    Gerrit-Attention: Danylo Mocherniuk <mda...@google.com>
    Gerrit-Attention: Leszek Swirski <les...@chromium.org>
    Gerrit-Comment-Date: Mon, 05 Jan 2026 07:13:28 +0000
    unsatisfied_requirement
    open
    diffy

    Danylo Mocherniuk (Gerrit)

    unread,
    Jan 7, 2026, 1:22:30 AM (2 days ago) Jan 7
    to Danylo Mocherniuk, V8 LUCI CQ, Leszek Swirski, dmercadi...@chromium.org, leszek...@chromium.org, v8-flag...@chromium.org, v8-re...@googlegroups.com, verwaes...@chromium.org, victorgo...@chromium.org
    Attention needed from Danylo Mocherniuk and Leszek Swirski

    Danylo Mocherniuk added 1 comment

    Patchset-level comments
    Leszek Swirski . unresolved

    Can you expand a bit on what this does, how it works, etc? Are you actually deoptimizing the optimized code, or do you only want to print what the interpreter values would have been if you had deoptimized it?

    Danylo Mocherniuk

    Added the explanation to the CL description. Also modified code a bit since your comment.

    Leszek Swirski

    I don't feel good about this approach -- it's hooking pretty intrusively into the deoptimisation, and effectively doing this weird kind of half-deopt, writing it to the stack, and then undoing it by smashing over the deopted stack with the old optimized stack? I don't think this is even GC safe, if `MaterializeHeapObjects` triggers a GC then the saved stack in dumpling will be invalid (since objects could have moved).

    I don't think you can, or should, get around using a separate Dumpling Deoptimizer-like class, which has its own TranslatedState initialisation and TranslattedFrame iteration. Then, you can do your own register state copy into that DumplingDeoptimizer (much like you're already copying registers into dumpling), and you can then simply drop that frame afterward, instead of trying to save state, deoptimize, print, and then restore state. This would be more consistent with what e.g. the debugger does -- it will cost a bit of duplicate logic but result in a much clearer separation of concerns.

    Danylo Mocherniuk

    Ok, thanks for suggesting the alternative approach with DumplingDeoptimizer, I'll try it.

    You've got the idea right and I agree it is not GC safe, original code had some hacks to disable GC during this, now I know why they needed it.

    Danylo Mocherniuk

    I uploaded the prototype of the new implementation, it is very dirty at the moment, but if we agree that this is a direction, I can clean it up.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Danylo Mocherniuk
    • Leszek Swirski
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Iacd6f4a976753c4459c68d82a0e4ac8e6f6d3aef
    Gerrit-Change-Number: 7352257
    Gerrit-PatchSet: 22
    Gerrit-Owner: Danylo Mocherniuk <mda...@google.com>
    Gerrit-Reviewer: Danylo Mocherniuk <mda...@chromium.org>
    Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
    Gerrit-Attention: Danylo Mocherniuk <mda...@google.com>
    Gerrit-Attention: Leszek Swirski <les...@chromium.org>
    Gerrit-Comment-Date: Wed, 07 Jan 2026 06:22:25 +0000
    unsatisfied_requirement
    open
    diffy

    Leszek Swirski (Gerrit)

    unread,
    Jan 7, 2026, 7:52:06 AM (2 days ago) Jan 7
    to Danylo Mocherniuk, Michael Lippautz, V8 LUCI CQ, Danylo Mocherniuk, dmercadi...@chromium.org, leszek...@chromium.org, v8-flag...@chromium.org, v8-re...@googlegroups.com, verwaes...@chromium.org, victorgo...@chromium.org
    Attention needed from Danylo Mocherniuk and Michael Lippautz

    Leszek Swirski added 7 comments

    Patchset-level comments
    File-level comment, Patchset 22 (Latest):
    Leszek Swirski . resolved

    Michael, see comment about GC safety of pushing maybe-tagged registers -- we might need to allow some sort of conservative scanning of these stack slots to support this.

    File src/builtins/x64/builtins-x64.cc
    Line 4686, Patchset 22 (Latest): bool is_dumping_mode = false) {
    Leszek Swirski . unresolved

    when is this true? Is this left over from the previous approach?

    Line 4755, Patchset 22 (Latest): static constexpr int kCallDumpFrameSize = 5;
    Leszek Swirski . unresolved

    nit: this isn't a frame size, it's an instruction size

    Line 4986, Patchset 22 (Latest): static constexpr int kXmmRegsSize = kSimd128Size * XMMRegister::kNumRegisters;
    Leszek Swirski . unresolved

    nit: constexpr doesn't need to be static

    Line 4989, Patchset 22 (Latest): const RegisterConfiguration* config = RegisterConfiguration::Default();
    for (int i = 0; i < config->num_allocatable_simd128_registers(); ++i) {
    int code = config->GetAllocatableSimd128Code(i);
    XMMRegister xmm_reg = XMMRegister::from_code(code);
    int offset = code * kSimd128Size;
    __ movdqu(Operand(rsp, offset), xmm_reg);
    }

    static constexpr int kNumberOfRegisters = Register::kNumRegisters;
    for (int i = 0; i < kNumberOfRegisters; i++) {
    __ pushq(Register::from_code(i));
    }
    Leszek Swirski . unresolved

    hm, I think this might not be GC safe either now that I think about it -- I believe that the GC assumes that everything between the end of the fixed-size frame and the next frame is tagged function arguments, so untagged register values here will likely segfault in the GC. Marking the stack as non-iterable doesn't fix this, this is a flag for the profiler not the GC.

    I'm not sure this is actually solvable with the metadata available to us, the stack maps don't include information about registers. Maybe for now we have to live without GC-ing operations like value materialization, and/or have to put the GC into a conservative scanning mode during this operation.

    cc Michael

    File src/deoptimizer/deoptimizer.cc
    Line 1586, Patchset 22 (Latest): for (int offset = 0; offset < frame_size; offset += kSystemPointerSize) {
    intptr_t value = desc->GetFrameSlot(offset);
    std::memcpy(stack_pointer + offset, &value, kSystemPointerSize);
    }
    Leszek Swirski . unresolved

    why copy into the virtual stack instead of using the FrameDescription's addresses directly?

    Line 1601, Patchset 22 (Latest): int bytecode_offset = trans_frame->bytecode_offset().ToInt();
    Leszek Swirski . unresolved

    you could feed the bytecode offset into the DumplingJSFrame too

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Danylo Mocherniuk
    • Michael Lippautz
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: Iacd6f4a976753c4459c68d82a0e4ac8e6f6d3aef
    Gerrit-Change-Number: 7352257
    Gerrit-PatchSet: 22
    Gerrit-Owner: Danylo Mocherniuk <mda...@google.com>
    Gerrit-Reviewer: Danylo Mocherniuk <mda...@chromium.org>
    Gerrit-Reviewer: Leszek Swirski <les...@chromium.org>
    Gerrit-Reviewer: Michael Lippautz <mlip...@chromium.org>
    Gerrit-Attention: Michael Lippautz <mlip...@chromium.org>
    Gerrit-Attention: Danylo Mocherniuk <mda...@google.com>
    Gerrit-Comment-Date: Wed, 07 Jan 2026 12:52:01 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    Danylo Mocherniuk (Gerrit)

    unread,
    Jan 7, 2026, 8:08:12 AM (2 days ago) Jan 7
    to Danylo Mocherniuk, Michael Lippautz, V8 LUCI CQ, Leszek Swirski, dmercadi...@chromium.org, leszek...@chromium.org, v8-flag...@chromium.org, v8-re...@googlegroups.com, verwaes...@chromium.org, victorgo...@chromium.org
    Attention needed from Danylo Mocherniuk and Michael Lippautz

    Danylo Mocherniuk added 2 comments

    Patchset-level comments
    Danylo Mocherniuk . unresolved

    Leszek and Michael, please note that this is a prototype yet. Very dirty and not ready for proper review, just a rough idea of what I want to do.

    File src/builtins/x64/builtins-x64.cc
    Line 4989, Patchset 22 (Latest): const RegisterConfiguration* config = RegisterConfiguration::Default();
    for (int i = 0; i < config->num_allocatable_simd128_registers(); ++i) {
    int code = config->GetAllocatableSimd128Code(i);
    XMMRegister xmm_reg = XMMRegister::from_code(code);
    int offset = code * kSimd128Size;
    __ movdqu(Operand(rsp, offset), xmm_reg);
    }

    static constexpr int kNumberOfRegisters = Register::kNumRegisters;
    for (int i = 0; i < kNumberOfRegisters; i++) {
    __ pushq(Register::from_code(i));
    }
    Leszek Swirski . unresolved

    hm, I think this might not be GC safe either now that I think about it -- I believe that the GC assumes that everything between the end of the fixed-size frame and the next frame is tagged function arguments, so untagged register values here will likely segfault in the GC. Marking the stack as non-iterable doesn't fix this, this is a flag for the profiler not the GC.

    I'm not sure this is actually solvable with the metadata available to us, the stack maps don't include information about registers. Maybe for now we have to live without GC-ing operations like value materialization, and/or have to put the GC into a conservative scanning mode during this operation.

    cc Michael

    Danylo Mocherniuk

    Yes, I was wondering the same thing.

    I'll try to see what I can do to skip GC here. In original code they control GC based on variable for this purpose during HeapObjectMaterialization: https://screenshot.googleplex.com/3Zcw7Zo7hBPoh7D.

    Gerrit-Comment-Date: Wed, 07 Jan 2026 13:08:07 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Leszek Swirski <les...@chromium.org>
    unsatisfied_requirement
    open
    diffy

    Leszek Swirski (Gerrit)

    unread,
    Jan 8, 2026, 7:02:36 AM (23 hours ago) Jan 8
    to Danylo Mocherniuk, Michael Lippautz, V8 LUCI CQ, Danylo Mocherniuk, dmercadi...@chromium.org, leszek...@chromium.org, v8-flag...@chromium.org, v8-re...@googlegroups.com, verwaes...@chromium.org, victorgo...@chromium.org
    Attention needed from Danylo Mocherniuk and Michael Lippautz

    Leszek Swirski added 1 comment

    File src/builtins/x64/builtins-x64.cc
    Line 4989, Patchset 22 (Latest): const RegisterConfiguration* config = RegisterConfiguration::Default();
    for (int i = 0; i < config->num_allocatable_simd128_registers(); ++i) {
    int code = config->GetAllocatableSimd128Code(i);
    XMMRegister xmm_reg = XMMRegister::from_code(code);
    int offset = code * kSimd128Size;
    __ movdqu(Operand(rsp, offset), xmm_reg);
    }

    static constexpr int kNumberOfRegisters = Register::kNumRegisters;
    for (int i = 0; i < kNumberOfRegisters; i++) {
    __ pushq(Register::from_code(i));
    }
    Leszek Swirski . unresolved

    hm, I think this might not be GC safe either now that I think about it -- I believe that the GC assumes that everything between the end of the fixed-size frame and the next frame is tagged function arguments, so untagged register values here will likely segfault in the GC. Marking the stack as non-iterable doesn't fix this, this is a flag for the profiler not the GC.

    I'm not sure this is actually solvable with the metadata available to us, the stack maps don't include information about registers. Maybe for now we have to live without GC-ing operations like value materialization, and/or have to put the GC into a conservative scanning mode during this operation.

    cc Michael

    Danylo Mocherniuk

    Yes, I was wondering the same thing.

    I'll try to see what I can do to skip GC here. In original code they control GC based on variable for this purpose during HeapObjectMaterialization: https://screenshot.googleplex.com/3Zcw7Zo7hBPoh7D.

    Leszek Swirski

    Ok, speaking to Michael, it seems reasonable that we could introduce a new constructor for the conservative pinning scope (https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/heap.cc;l=7989;drc=b87c7d07f63e19e4d34afd15c0df5cd496b15d37;bpv=1;bpt=1) which starts conservative scanning from the start of the pushed registers -- then GCs shouldn't be a problem.

    Gerrit-Comment-Date: Thu, 08 Jan 2026 12:02:31 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy
    Reply all
    Reply to author
    Forward
    0 new messages