| Index: src/api.cc
|
| ===================================================================
|
| --- src/api.cc (revision 4556)
|
| +++ src/api.cc (working copy)
|
| @@ -1438,7 +1438,7 @@
|
|
|
|
|
| int Message::GetLineNumber() const {
|
| - ON_BAILOUT("v8::Message::GetLineNumber()", return -1);
|
| + ON_BAILOUT("v8::Message::GetLineNumber()", return kNoLineNumberInfo);
|
| ENTER_V8;
|
| HandleScope scope;
|
| EXCEPTION_PREAMBLE();
|
| @@ -1470,7 +1470,7 @@
|
|
|
|
|
| int Message::GetStartColumn() const {
|
| - if (IsDeadCheck("v8::Message::GetStartColumn()")) return 0;
|
| + if (IsDeadCheck("v8::Message::GetStartColumn()")) return kNoColumnInfo;
|
| ENTER_V8;
|
| HandleScope scope;
|
| i::Handle<i::JSObject> data_obj = Utils::OpenHandle(this);
|
| @@ -1485,7 +1485,7 @@
|
|
|
|
|
| int Message::GetEndColumn() const {
|
| - if (IsDeadCheck("v8::Message::GetEndColumn()")) return 0;
|
| + if (IsDeadCheck("v8::Message::GetEndColumn()")) return kNoColumnInfo;
|
| ENTER_V8;
|
| HandleScope scope;
|
| i::Handle<i::JSObject> data_obj = Utils::OpenHandle(this);
|
| @@ -1525,6 +1525,118 @@
|
| }
|
|
|
|
|
| +// --- S t a c k T r a c e ---
|
| +
|
| +Local<StackFrame> StackTrace::GetFrame(uint32_t index) const {
|
| + if (IsDeadCheck("v8::StackTrace::GetFrame()")) return Local<StackFrame>();
|
| + ENTER_V8;
|
| + HandleScope scope;
|
| + i::Handle<i::JSArray> self = Utils::OpenHandle(this);
|
| + i::Handle<i::JSObject> obj(i::JSObject::cast(self->GetElement(index)));
|
| + return scope.Close(Utils::StackFrameToLocal(obj));
|
| +}
|
| +
|
| +
|
| +int StackTrace::GetFrameCount() const {
|
| + if (IsDeadCheck("v8::StackTrace::GetFrameCount()")) return -1;
|
| + ENTER_V8;
|
| + return i::Smi::cast(Utils::OpenHandle(this)->length())->value();
|
| +}
|
| +
|
| +
|
| +Local<Array> StackTrace::AsArray() {
|
| + if (IsDeadCheck("v8::StackTrace::AsArray()")) Local<Array>();
|
| + ENTER_V8;
|
| + return Utils::ToLocal(Utils::OpenHandle(this));
|
| +}
|
| +
|
| +
|
| +Local<StackTrace> StackTrace::CurrentStackTrace(int frame_limit,
|
| + StackTraceOptions options) {
|
| + if (IsDeadCheck("v8::StackTrace::CurrentStackTrace()")) Local<StackTrace>();
|
| + ENTER_V8;
|
| + return i::Top::CaptureCurrentStackTrace(frame_limit, options);
|
| +}
|
| +
|
| +
|
| +// --- S t a c k F r a m e ---
|
| +
|
| +int StackFrame::GetLineNumber() const {
|
| + if (IsDeadCheck("v8::StackFrame::GetLineNumber()")) {
|
| + return Message::kNoLineNumberInfo;
|
| + }
|
| + ENTER_V8;
|
| + i::HandleScope scope;
|
| + i::Handle<i::JSObject> self = Utils::OpenHandle(this);
|
| + i::Handle<i::Object> line = GetProperty(self, "lineNumber");
|
| + if (!line->IsSmi()) {
|
| + return Message::kNoLineNumberInfo;
|
| + }
|
| + return i::Smi::cast(*line)->value();
|
| +}
|
| +
|
| +
|
| +int StackFrame::GetColumn() const {
|
| + if (IsDeadCheck("v8::StackFrame::GetColumn()")) {
|
| + return Message::kNoColumnInfo;
|
| + }
|
| + ENTER_V8;
|
| + i::HandleScope scope;
|
| + i::Handle<i::JSObject> self = Utils::OpenHandle(this);
|
| + i::Handle<i::Object> column = GetProperty(self, "column");
|
| + if (!column->IsSmi()) {
|
| + return Message::kNoColumnInfo;
|
| + }
|
| + return i::Smi::cast(*column)->value();
|
| +}
|
| +
|
| +
|
| +Local<String> StackFrame::GetScriptName() const {
|
| + if (IsDeadCheck("v8::StackFrame::GetScriptName()")) return Local<String>();
|
| + ENTER_V8;
|
| + HandleScope scope;
|
| + i::Handle<i::JSObject> self = Utils::OpenHandle(this);
|
| + i::Handle<i::Object> name = GetProperty(self, "scriptName");
|
| + if (!name->IsString()) {
|
| + return Local<String>();
|
| + }
|
| + return scope.Close(Local<String>::Cast(Utils::ToLocal(name)));
|
| +}
|
| +
|
| +
|
| +Local<String> StackFrame::GetFunctionName() const {
|
| + if (IsDeadCheck("v8::StackFrame::GetFunctionName()")) return Local<String>();
|
| + ENTER_V8;
|
| + HandleScope scope;
|
| + i::Handle<i::JSObject> self = Utils::OpenHandle(this);
|
| + i::Handle<i::Object> name = GetProperty(self, "functionName");
|
| + if (!name->IsString()) {
|
| + return Local<String>();
|
| + }
|
| + return scope.Close(Local<String>::Cast(Utils::ToLocal(name)));
|
| +}
|
| +
|
| +
|
| +bool StackFrame::IsEval() const {
|
| + if (IsDeadCheck("v8::StackFrame::IsEval()")) return false;
|
| + ENTER_V8;
|
| + i::HandleScope scope;
|
| + i::Handle<i::JSObject> self = Utils::OpenHandle(this);
|
| + i::Handle<i::Object> is_eval = GetProperty(self, "isEval");
|
| + return is_eval->IsTrue();
|
| +}
|
| +
|
| +
|
| +bool StackFrame::IsConstructor() const {
|
| + if (IsDeadCheck("v8::StackFrame::IsConstructor()")) return false;
|
| + ENTER_V8;
|
| + i::HandleScope scope;
|
| + i::Handle<i::JSObject> self = Utils::OpenHandle(this);
|
| + i::Handle<i::Object> is_constructor = GetProperty(self, "isConstructor");
|
| + return is_constructor->IsTrue();
|
| +}
|
| +
|
| +
|
| // --- D a t a ---
|
|
|
| bool Value::IsUndefined() const {
|
|
|