Port c7e47c3033
Original Commit Message:
A collection of smallish cleanups and improvements for safepoints.
Maintainability:
- The class names were not very clear; move Safepoint inside
SafepointTableBuilder to clarify that this wrapper class is used
during codegen.
- Rename DefinePointerSlot/DefineRegister to
DefineTaggedStackSlot/DefineTaggedRegister for clarity.
- Use named constants instead of -1.
- DefineTaggedRegister has no connection to kNoDeoptIndex, remove
the DCHECK and comment.
- Remove the unused kNumSafepointRegisters constant + other dead code.
- Small clarifications in CommonFrame::IterateCompiledFrame.
- Rename has_safepoint_info to uses_safepoint_table and refactor s.t.
`stack_slots` can be used when `uses_safepoint_table == false`. In
this case it just returns 0.
Perf:
- During codegen, represent stack slots as a growable bit vector
instead of a list of int indices. Extend GrowableBitVector
functionality to support the above.
- Track the minimum index instead of iterating all stack slots in
all safepoints before encoding.
R=jgruber@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
BUG=
LOG=N
Change-Id: Ifef2d95f1e4a064d85d4ce437b1d12ae9796336f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3484701
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Milad Farazmand <mfarazma@redhat.com>
Cr-Commit-Position: refs/heads/main@{#79237}