Commit 4bc932bf authored by Leszek Swirski's avatar Leszek Swirski Committed by Commit Bot

[frames] Don't consider baseline prologue builtin frames BASELINE

Now that we create a full frame for interrupts during the baseline
out-of-line prologue, we shouldn't consider the out-of-line prologue
builtin's frames as BASELINE, but rather have the frame above be the
baseline frame.

Change-Id: Icf96a6be4cf4bff0e482964bece12d397a26c268
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2712789
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72919}
parent f4ea6c55
...@@ -225,13 +225,10 @@ bool IsInterpreterFramePc(Isolate* isolate, Address pc, ...@@ -225,13 +225,10 @@ bool IsInterpreterFramePc(Isolate* isolate, Address pc,
isolate->builtins()->builtin(Builtins::kInterpreterEnterBytecodeAdvance); isolate->builtins()->builtin(Builtins::kInterpreterEnterBytecodeAdvance);
Code interpreter_bytecode_dispatch = Code interpreter_bytecode_dispatch =
isolate->builtins()->builtin(Builtins::kInterpreterEnterBytecodeDispatch); isolate->builtins()->builtin(Builtins::kInterpreterEnterBytecodeDispatch);
Code baseline_prologue =
isolate->builtins()->builtin(Builtins::kBaselineOutOfLinePrologue);
if (interpreter_entry_trampoline.contains(pc) || if (interpreter_entry_trampoline.contains(pc) ||
interpreter_bytecode_advance.contains(pc) || interpreter_bytecode_advance.contains(pc) ||
interpreter_bytecode_dispatch.contains(pc) || interpreter_bytecode_dispatch.contains(pc)) {
baseline_prologue.contains(pc)) {
return true; return true;
} else if (FLAG_interpreted_frames_native_stack) { } else if (FLAG_interpreted_frames_native_stack) {
intptr_t marker = Memory<intptr_t>( intptr_t marker = Memory<intptr_t>(
...@@ -590,8 +587,7 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator, ...@@ -590,8 +587,7 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
if (code_obj.is_interpreter_trampoline_builtin()) { if (code_obj.is_interpreter_trampoline_builtin()) {
return INTERPRETED; return INTERPRETED;
} }
if (code_obj.is_baseline_prologue_builtin() || if (code_obj.is_baseline_leave_frame_builtin()) {
code_obj.is_baseline_leave_frame_builtin()) {
return BASELINE; return BASELINE;
} }
if (code_obj.is_turbofanned()) { if (code_obj.is_turbofanned()) {
......
...@@ -349,7 +349,7 @@ inline int ReadUint(ByteArray array, int* index) { ...@@ -349,7 +349,7 @@ inline int ReadUint(ByteArray array, int* index) {
int Code::GetBytecodeOffsetForBaselinePC(Address baseline_pc) { int Code::GetBytecodeOffsetForBaselinePC(Address baseline_pc) {
DisallowGarbageCollection no_gc; DisallowGarbageCollection no_gc;
if (is_baseline_prologue_builtin()) return kFunctionEntryBytecodeOffset; CHECK(!is_baseline_prologue_builtin());
if (is_baseline_leave_frame_builtin()) return kFunctionExitBytecodeOffset; if (is_baseline_leave_frame_builtin()) return kFunctionExitBytecodeOffset;
CHECK_EQ(kind(), CodeKind::BASELINE); CHECK_EQ(kind(), CodeKind::BASELINE);
ByteArray data = ByteArray::cast(source_position_table()); ByteArray data = ByteArray::cast(source_position_table());
......
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