[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:
parent
f4ea6c5516
commit
4bc932bfd1
@ -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,
|
|||||||
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) {
|
|||||||
|
|
||||||
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());
|
||||||
|
Loading…
Reference in New Issue
Block a user