[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: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72919}
This commit is contained in:
Leszek Swirski 2021-02-22 16:53:44 +01:00 committed by Commit Bot
parent f4ea6c5516
commit 4bc932bfd1
2 changed files with 3 additions and 7 deletions

View File

@ -225,13 +225,10 @@ bool IsInterpreterFramePc(Isolate* isolate, Address pc,
isolate->builtins()->builtin(Builtins::kInterpreterEnterBytecodeAdvance);
Code interpreter_bytecode_dispatch =
isolate->builtins()->builtin(Builtins::kInterpreterEnterBytecodeDispatch);
Code baseline_prologue =
isolate->builtins()->builtin(Builtins::kBaselineOutOfLinePrologue);
if (interpreter_entry_trampoline.contains(pc) ||
interpreter_bytecode_advance.contains(pc) ||
interpreter_bytecode_dispatch.contains(pc) ||
baseline_prologue.contains(pc)) {
interpreter_bytecode_dispatch.contains(pc)) {
return true;
} else if (FLAG_interpreted_frames_native_stack) {
intptr_t marker = Memory<intptr_t>(
@ -590,8 +587,7 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
if (code_obj.is_interpreter_trampoline_builtin()) {
return INTERPRETED;
}
if (code_obj.is_baseline_prologue_builtin() ||
code_obj.is_baseline_leave_frame_builtin()) {
if (code_obj.is_baseline_leave_frame_builtin()) {
return BASELINE;
}
if (code_obj.is_turbofanned()) {

View File

@ -349,7 +349,7 @@ inline int ReadUint(ByteArray array, int* index) {
int Code::GetBytecodeOffsetForBaselinePC(Address baseline_pc) {
DisallowGarbageCollection no_gc;
if (is_baseline_prologue_builtin()) return kFunctionEntryBytecodeOffset;
CHECK(!is_baseline_prologue_builtin());
if (is_baseline_leave_frame_builtin()) return kFunctionExitBytecodeOffset;
CHECK_EQ(kind(), CodeKind::BASELINE);
ByteArray data = ByteArray::cast(source_position_table());