diff options
author | Michaël Zasso <targos@protonmail.com> | 2017-06-06 10:28:14 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2017-06-07 10:33:31 +0200 |
commit | 3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09 (patch) | |
tree | 9dee56e142638b34f1eccbd0ad88c3bce5377c29 /deps/v8/src/messages.cc | |
parent | 91a1bbe3055a660194ca4d403795aa0c03e9d056 (diff) | |
download | android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.tar.gz android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.tar.bz2 android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.zip |
deps: update V8 to 5.9.211.32
PR-URL: https://github.com/nodejs/node/pull/13263
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/v8/src/messages.cc')
-rw-r--r-- | deps/v8/src/messages.cc | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/deps/v8/src/messages.cc b/deps/v8/src/messages.cc index b5150ef400..e61ce90791 100644 --- a/deps/v8/src/messages.cc +++ b/deps/v8/src/messages.cc @@ -10,6 +10,7 @@ #include "src/execution.h" #include "src/isolate-inl.h" #include "src/keys.h" +#include "src/objects/frame-array-inl.h" #include "src/string-builder.h" #include "src/wasm/wasm-module.h" #include "src/wasm/wasm-objects.h" @@ -639,12 +640,19 @@ WasmStackFrame::WasmStackFrame() {} void WasmStackFrame::FromFrameArray(Isolate* isolate, Handle<FrameArray> array, int frame_ix) { - // This function is called for both wasm and asm.js->wasm frames. - DCHECK(array->IsWasmFrame(frame_ix) || array->IsAsmJsWasmFrame(frame_ix)); + // This function is called for compiled and interpreted wasm frames, and for + // asm.js->wasm frames. + DCHECK(array->IsWasmFrame(frame_ix) || + array->IsWasmInterpretedFrame(frame_ix) || + array->IsAsmJsWasmFrame(frame_ix)); isolate_ = isolate; wasm_instance_ = handle(array->WasmInstance(frame_ix), isolate); wasm_func_index_ = array->WasmFunctionIndex(frame_ix)->value(); - code_ = handle(array->Code(frame_ix), isolate); + if (array->IsWasmInterpretedFrame(frame_ix)) { + code_ = Handle<AbstractCode>::null(); + } else { + code_ = handle(array->Code(frame_ix), isolate); + } offset_ = array->Offset(frame_ix)->value(); } @@ -679,19 +687,21 @@ MaybeHandle<String> WasmStackFrame::ToString() { builder.AppendCString(" (<WASM>["); - Handle<Smi> ix(Smi::FromInt(wasm_func_index_), isolate_); - builder.AppendString(isolate_->factory()->NumberToString(ix)); + char buffer[16]; + SNPrintF(ArrayVector(buffer), "%u", wasm_func_index_); + builder.AppendCString(buffer); builder.AppendCString("]+"); - Handle<Object> pos(Smi::FromInt(GetPosition()), isolate_); - builder.AppendString(isolate_->factory()->NumberToString(pos)); + SNPrintF(ArrayVector(buffer), "%d", GetPosition()); + builder.AppendCString(buffer); builder.AppendCString(")"); return builder.Finish(); } int WasmStackFrame::GetPosition() const { + if (IsInterpreted()) return offset_; // TODO(wasm): Clean this up (bug 5007). return (offset_ < 0) ? (-1 - offset_) : code_->SourcePosition(offset_); } @@ -731,7 +741,7 @@ Handle<Object> AsmJsWasmStackFrame::GetFunction() const { Handle<Object> AsmJsWasmStackFrame::GetFileName() { Handle<Script> script = wasm::GetScript(Handle<JSObject>::cast(wasm_instance_)); - DCHECK_EQ(Script::TYPE_NORMAL, script->type()); + DCHECK(script->IsUserJavaScript()); return handle(script->name(), isolate_); } @@ -757,7 +767,7 @@ int AsmJsWasmStackFrame::GetLineNumber() { DCHECK_LE(0, GetPosition()); Handle<Script> script = wasm::GetScript(Handle<JSObject>::cast(wasm_instance_)); - DCHECK_EQ(Script::TYPE_NORMAL, script->type()); + DCHECK(script->IsUserJavaScript()); return Script::GetLineNumber(script, GetPosition()) + 1; } @@ -765,7 +775,7 @@ int AsmJsWasmStackFrame::GetColumnNumber() { DCHECK_LE(0, GetPosition()); Handle<Script> script = wasm::GetScript(Handle<JSObject>::cast(wasm_instance_)); - DCHECK_EQ(Script::TYPE_NORMAL, script->type()); + DCHECK(script->IsUserJavaScript()); return Script::GetColumnNumber(script, GetPosition()) + 1; } @@ -802,13 +812,17 @@ void FrameArrayIterator::Next() { next_frame_ix_++; } StackFrameBase* FrameArrayIterator::Frame() { DCHECK(HasNext()); const int flags = array_->Flags(next_frame_ix_)->value(); - switch (flags & (FrameArray::kIsWasmFrame | FrameArray::kIsAsmJsWasmFrame)) { + int flag_mask = FrameArray::kIsWasmFrame | + FrameArray::kIsWasmInterpretedFrame | + FrameArray::kIsAsmJsWasmFrame; + switch (flags & flag_mask) { case 0: // JavaScript Frame. js_frame_.FromFrameArray(isolate_, array_, next_frame_ix_); return &js_frame_; case FrameArray::kIsWasmFrame: - // Wasm Frame; + case FrameArray::kIsWasmInterpretedFrame: + // Wasm Frame: wasm_frame_.FromFrameArray(isolate_, array_, next_frame_ix_); return &wasm_frame_; case FrameArray::kIsAsmJsWasmFrame: @@ -1007,6 +1021,8 @@ Handle<String> MessageTemplate::FormatMessage(Isolate* isolate, template_index, result_string, factory->empty_string(), factory->empty_string()); if (!maybe_result_string.ToHandle(&result_string)) { + DCHECK(isolate->has_pending_exception()); + isolate->clear_pending_exception(); return factory->InternalizeOneByteString(STATIC_CHAR_VECTOR("<error>")); } // A string that has been obtained from JS code in this way is |