| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 7657118ded6ecdee4662acc905dbf77f9bc04d6f..9d4cacd27956d94e594e1e278b545ed95766a1b3 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -2751,8 +2751,8 @@ v8::Local<v8::StackTrace> Message::GetStackTrace() const {
|
| EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate));
|
| auto message = i::Handle<i::JSMessageObject>::cast(Utils::OpenHandle(this));
|
| i::Handle<i::Object> stackFramesObj(message->stack_frames(), isolate);
|
| - if (!stackFramesObj->IsJSArray()) return v8::Local<v8::StackTrace>();
|
| - auto stackTrace = i::Handle<i::JSArray>::cast(stackFramesObj);
|
| + if (!stackFramesObj->IsFixedArray()) return v8::Local<v8::StackTrace>();
|
| + auto stackTrace = i::Handle<i::FixedArray>::cast(stackFramesObj);
|
| return scope.Escape(Utils::StackTraceToLocal(stackTrace));
|
| }
|
|
|
| @@ -2877,15 +2877,14 @@ Local<StackFrame> StackTrace::GetFrame(uint32_t index) const {
|
| i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
|
| ENTER_V8_NO_SCRIPT_NO_EXCEPTION(isolate);
|
| EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate));
|
| - auto self = Utils::OpenHandle(this);
|
| - auto obj = i::JSReceiver::GetElement(isolate, self, index).ToHandleChecked();
|
| + auto obj = handle(Utils::OpenHandle(this)->get(index), isolate);
|
| auto info = i::Handle<i::StackFrameInfo>::cast(obj);
|
| return scope.Escape(Utils::StackFrameToLocal(info));
|
| }
|
|
|
|
|
| int StackTrace::GetFrameCount() const {
|
| - return i::Smi::cast(Utils::OpenHandle(this)->length())->value();
|
| + return Utils::OpenHandle(this)->length();
|
| }
|
|
|
| namespace {
|
| @@ -2933,12 +2932,12 @@ i::Handle<i::JSObject> NewFrameObject(i::Isolate* isolate,
|
|
|
| Local<Array> StackTrace::AsArray() {
|
| i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
|
| - i::Handle<i::JSArray> self = Utils::OpenHandle(this);
|
| - int frame_count = GetFrameCount();
|
| + i::Handle<i::FixedArray> self = Utils::OpenHandle(this);
|
| + int frame_count = self->length();
|
| i::Handle<i::FixedArray> frames =
|
| isolate->factory()->NewFixedArray(frame_count);
|
| for (int i = 0; i < frame_count; ++i) {
|
| - auto obj = i::JSReceiver::GetElement(isolate, self, i).ToHandleChecked();
|
| + auto obj = handle(self->get(i), isolate);
|
| auto frame = i::Handle<i::StackFrameInfo>::cast(obj);
|
| i::Handle<i::JSObject> frame_obj = NewFrameObject(isolate, frame);
|
| frames->set(i, *frame_obj);
|
| @@ -2954,7 +2953,7 @@ Local<StackTrace> StackTrace::CurrentStackTrace(
|
| StackTraceOptions options) {
|
| i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
|
| ENTER_V8_NO_SCRIPT_NO_EXCEPTION(i_isolate);
|
| - i::Handle<i::JSArray> stackTrace =
|
| + i::Handle<i::FixedArray> stackTrace =
|
| i_isolate->CaptureCurrentStackTrace(frame_limit, options);
|
| return Utils::StackTraceToLocal(stackTrace);
|
| }
|
|
|