Skip to content

Commit

Permalink
deps: cherry-pick 9a23bdd from upstream V8
Browse files Browse the repository at this point in the history
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@{nodejs#54253}

Refs: nodejs#21988
  • Loading branch information
Drieger committed Sep 18, 2018
1 parent 3b763cd commit c0aa2d0
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
2 changes: 1 addition & 1 deletion common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

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

# Enable disassembler for `--print-code` v8 options
'v8_enable_disassembler': 1,
Expand Down
13 changes: 11 additions & 2 deletions deps/v8/src/isolate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1661,8 +1661,17 @@ void Isolate::PrintCurrentStackTrace(FILE* out) {

Handle<Object> receiver(frame->receiver(), this);
Handle<JSFunction> function(frame->function(), this);
Handle<AbstractCode> code(AbstractCode::cast(frame->LookupCode()), this);
const int offset = static_cast<int>(frame->pc() - code->InstructionStart());
Handle<AbstractCode> code;
int offset;
if (frame->is_interpreted()) {
InterpretedFrame* interpreted_frame = InterpretedFrame::cast(frame);
code = handle(AbstractCode::cast(interpreted_frame->GetBytecodeArray()),
this);
offset = interpreted_frame->GetBytecodeOffset();
} else {
code = handle(AbstractCode::cast(frame->LookupCode()), this);
offset = static_cast<int>(frame->pc() - code->InstructionStart());
}

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

0 comments on commit c0aa2d0

Please sign in to comment.