зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1257919 part 7. Make the name getter on JSStackFrame take an explicit JSContext. r=khuey
This commit is contained in:
Родитель
efa07c06d1
Коммит
54987c5cc1
|
@ -1053,7 +1053,7 @@ StackFrameToStackEntry(JSContext* aCx, nsIStackFrame* aStackFrame,
|
|||
|
||||
aStackEntry.mColumnNumber = columnNumber;
|
||||
|
||||
rv = aStackFrame->GetName(aStackEntry.mFunctionName);
|
||||
rv = aStackFrame->GetName(aCx, aStackEntry.mFunctionName);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsString cause;
|
||||
|
|
|
@ -369,17 +369,16 @@ NS_IMETHODIMP JSStackFrame::GetFilename(JSContext* aCx, nsAString& aFilename)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP JSStackFrame::GetName(nsAString& aFunction)
|
||||
NS_IMETHODIMP JSStackFrame::GetName(JSContext* aCx, nsAString& aFunction)
|
||||
{
|
||||
if (!mStack) {
|
||||
aFunction.Truncate();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
ThreadsafeAutoJSContext cx;
|
||||
JS::Rooted<JSString*> name(cx);
|
||||
JS::Rooted<JSString*> name(aCx);
|
||||
bool canCache = false, useCachedValue = false;
|
||||
GetValueIfNotCached(cx, mStack, JS::GetSavedFrameFunctionDisplayName,
|
||||
GetValueIfNotCached(aCx, mStack, JS::GetSavedFrameFunctionDisplayName,
|
||||
mFunnameInitialized, &canCache, &useCachedValue,
|
||||
&name);
|
||||
|
||||
|
@ -390,8 +389,8 @@ NS_IMETHODIMP JSStackFrame::GetName(nsAString& aFunction)
|
|||
|
||||
if (name) {
|
||||
nsAutoJSString str;
|
||||
if (!str.init(cx, name)) {
|
||||
JS_ClearPendingException(cx);
|
||||
if (!str.init(aCx, name)) {
|
||||
JS_ClearPendingException(aCx);
|
||||
aFunction.Truncate();
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -644,7 +643,7 @@ NS_IMETHODIMP JSStackFrame::ToString(JSContext* aCx, nsACString& _retval)
|
|||
}
|
||||
|
||||
nsString funname;
|
||||
rv = GetName(funname);
|
||||
rv = GetName(aCx, funname);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (funname.IsEmpty()) {
|
||||
|
|
|
@ -59,7 +59,7 @@ SandboxLogJSStack(void)
|
|||
lineNumber = 0;
|
||||
Unused << frame->GetLineNumber(&lineNumber);
|
||||
funName.SetIsVoid(true);
|
||||
Unused << frame->GetName(funName);
|
||||
Unused << frame->GetName(cx, funName);
|
||||
|
||||
if (!funName.IsVoid() || !fileName.IsVoid()) {
|
||||
SANDBOX_LOG_ERROR("JS frame %d: %s %s line %d", i,
|
||||
|
|
|
@ -18,6 +18,7 @@ interface nsIStackFrame : nsISupports
|
|||
readonly attribute AUTF8String languageName;
|
||||
[implicit_jscontext]
|
||||
readonly attribute AString filename;
|
||||
[implicit_jscontext]
|
||||
readonly attribute AString name;
|
||||
// Valid line numbers begin at '1'. '0' indicates unknown.
|
||||
readonly attribute int32_t lineNumber;
|
||||
|
|
Загрузка…
Ссылка в новой задаче