aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/messages.cc
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2017-06-06 10:28:14 +0200
committerMichaël Zasso <targos@protonmail.com>2017-06-07 10:33:31 +0200
commit3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09 (patch)
tree9dee56e142638b34f1eccbd0ad88c3bce5377c29 /deps/v8/src/messages.cc
parent91a1bbe3055a660194ca4d403795aa0c03e9d056 (diff)
downloadandroid-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.cc40
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