Skip to content

Commit 5660759

Browse files
Driegertargos
authored andcommitted
deps: cherry-pick 9a23bdd from upstream V8
Original commit message: [Isolate] Fix Isolate::PrintCurrentStackTrace for interpreted frames Previously we were getting the code object from the stack, so printed incorrect position details for interpreted frames. BUG=v8:7916 Change-Id: I2f87584117d88b7db3f3b9bdbfe793c4d3e33fe9 Reviewed-on: https://chromium-review.googlesource.com/1126313 Reviewed-by: Toon Verwaest <[email protected]> Commit-Queue: Ross McIlroy <[email protected]> Cr-Commit-Position: refs/heads/master@{#54253} Refs: v8/v8@9a23bdd Refs: #21988 PR-URL: #22910 Reviewed-By: Matheus Marchini <[email protected]> Reviewed-By: Michaël Zasso <[email protected]>
1 parent 8ffcb2d commit 5660759

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

common.gypi

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
# Reset this number to 0 on major V8 upgrades.
3131
# Increment by one for each non-official patch applied to deps/v8.
32-
'v8_embedder_string': '-node.27',
32+
'v8_embedder_string': '-node.28',
3333

3434
# Enable disassembler for `--print-code` v8 options
3535
'v8_enable_disassembler': 1,

deps/v8/src/isolate.cc

+11-2
Original file line numberDiff line numberDiff line change
@@ -1661,8 +1661,17 @@ void Isolate::PrintCurrentStackTrace(FILE* out) {
16611661

16621662
Handle<Object> receiver(frame->receiver(), this);
16631663
Handle<JSFunction> function(frame->function(), this);
1664-
Handle<AbstractCode> code(AbstractCode::cast(frame->LookupCode()), this);
1665-
const int offset = static_cast<int>(frame->pc() - code->InstructionStart());
1664+
Handle<AbstractCode> code;
1665+
int offset;
1666+
if (frame->is_interpreted()) {
1667+
InterpretedFrame* interpreted_frame = InterpretedFrame::cast(frame);
1668+
code = handle(AbstractCode::cast(interpreted_frame->GetBytecodeArray()),
1669+
this);
1670+
offset = interpreted_frame->GetBytecodeOffset();
1671+
} else {
1672+
code = handle(AbstractCode::cast(frame->LookupCode()), this);
1673+
offset = static_cast<int>(frame->pc() - code->InstructionStart());
1674+
}
16661675

16671676
JSStackFrame site(this, receiver, function, code, offset);
16681677
Handle<String> line = site.ToString().ToHandleChecked();

0 commit comments

Comments
 (0)