Commit 30f9c924 authored by Leszek Swirski's avatar Leszek Swirski Committed by V8 LUCI CQ

[maglev] Allow closure register access

Allow bytecodes processed by maglev to access the on-stack closure
register.

Bug: v8:7700
Change-Id: I757d0c1734ef478e5b9671ed87a4691101b4e29d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3506444
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: 's avatarVictor Gomes <victorgomes@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79383}
parent 515c3887
......@@ -63,19 +63,14 @@ class MaglevGraphBuilder {
current_interpreter_frame_.set(reg, AddNewNode<InitialValue>({}, reg));
}
// interpreter::Register regs[] = {interpreter::Register::current_context(),
// interpreter::Register::function_closure(),
// interpreter::Register::bytecode_array(),
// interpreter::Register::bytecode_offset()};
// for (interpreter::Register& reg : regs) {
// current_interpreter_frame_.set(reg, AddNewNode<InitialValue>({}, reg));
// }
// TODO(leszeks): Extract out a separate "incoming context" node to be able
// to read in the context arg but also use the frame-spilled context var.
current_interpreter_frame_.set(
interpreter::Register::current_context(),
AddNewNode<InitialValue>({}, interpreter::Register::current_context()));
// TODO(leszeks): Extract out a separate "incoming context/closure" nodes,
// to be able to read in the machine register but also use the frame-spilled
// slot.
interpreter::Register regs[] = {interpreter::Register::current_context(),
interpreter::Register::function_closure()};
for (interpreter::Register& reg : regs) {
current_interpreter_frame_.set(reg, AddNewNode<InitialValue>({}, reg));
}
interpreter::Register new_target_or_generator_register =
bytecode().incoming_new_target_or_generator_register();
......
......@@ -48,6 +48,7 @@ class InterpreterFrameState {
void set(interpreter::Register reg, ValueNode* value) {
DCHECK_IMPLIES(reg.is_parameter(),
reg == interpreter::Register::current_context() ||
reg == interpreter::Register::function_closure() ||
reg.ToParameterIndex() >= 0);
frame_[reg] = value;
}
......
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