From: yurys@chromium.org Date: Wed, 9 Nov 2011 14:18:30 +0000 (+0000) Subject: Add getters for column number and script id to v8::Function X-Git-Tag: upstream/4.7.83~17960 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8b7bcc4e8073847c7509d9af784ac576f35ae224;p=platform%2Fupstream%2Fv8.git Add getters for column number and script id to v8::Function Review URL: http://codereview.chromium.org/8508008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9935 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/include/v8.h b/include/v8.h index 73b7fbe..9c8b9c7 100644 --- a/include/v8.h +++ b/include/v8.h @@ -1736,9 +1736,16 @@ class Function : public Object { * kLineOffsetNotFound if no information available. */ V8EXPORT int GetScriptLineNumber() const; + /** + * Returns zero based column number of function body and + * kLineOffsetNotFound if no information available. + */ + V8EXPORT int GetScriptColumnNumber() const; + V8EXPORT Handle GetScriptId() const; V8EXPORT ScriptOrigin GetScriptOrigin() const; static inline Function* Cast(Value* obj); V8EXPORT static const int kLineOffsetNotFound; + private: V8EXPORT Function(); V8EXPORT static void CheckCast(Value* obj); diff --git a/src/api.cc b/src/api.cc index 40a89e2..1ad70e8 100644 --- a/src/api.cc +++ b/src/api.cc @@ -3619,6 +3619,23 @@ int Function::GetScriptLineNumber() const { } +int Function::GetScriptColumnNumber() const { + i::Handle func = Utils::OpenHandle(this); + if (func->shared()->script()->IsScript()) { + i::Handle script(i::Script::cast(func->shared()->script())); + return i::GetScriptColumnNumber(script, func->shared()->start_position()); + } + return kLineOffsetNotFound; +} + +Handle Function::GetScriptId() const { + i::Handle func = Utils::OpenHandle(this); + if (!func->shared()->script()->IsScript()) + return v8::Undefined(); + i::Handle script(i::Script::cast(func->shared()->script())); + return Utils::ToLocal(i::Handle(script->id())); +} + int String::Length() const { i::Handle str = Utils::OpenHandle(this); if (IsDeadCheck(str->GetIsolate(), "v8::String::Length()")) return 0; diff --git a/src/handles.cc b/src/handles.cc index db8ce4d..2ff797d 100644 --- a/src/handles.cc +++ b/src/handles.cc @@ -662,6 +662,19 @@ int GetScriptLineNumber(Handle