Bug 940321 - Eliminate ambient noScriptRval, and make it live exclusively on CompileOptions. r=jandem

This commit is contained in:
Bobby Holley 2014-07-31 09:55:20 -07:00
Родитель 55469e4be7
Коммит a23211976d
6 изменённых файлов: 14 добавлений и 35 удалений

Просмотреть файл

@ -162,8 +162,7 @@ namespace {
const uint32_t kNoIndex = uint32_t(-1);
const JS::ContextOptions kRequiredContextOptions =
JS::ContextOptions().setDontReportUncaught(true)
.setNoScriptRval(true);
JS::ContextOptions().setDontReportUncaught(true);
uint32_t gMaxWorkersPerDomain = MAX_WORKERS_PER_DOMAIN;

Просмотреть файл

@ -745,7 +745,8 @@ ScriptExecutorRunnable::WorkerRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate)
NS_ConvertUTF16toUTF8 filename(loadInfo.mURL);
JS::CompileOptions options(aCx);
options.setFileAndLine(filename.get(), 1);
options.setFileAndLine(filename.get(), 1)
.setNoScriptRval(true);
JS::SourceBufferHolder srcBuf(loadInfo.mScriptTextBuf,
loadInfo.mScriptTextLength,

Просмотреть файл

@ -5430,7 +5430,8 @@ WorkerPrivate::RunExpiredTimeouts(JSContext* aCx)
nsString expression = info->mTimeoutString;
JS::CompileOptions options(aCx);
options.setFileAndLine(info->mFilename.get(), info->mLineNumber);
options.setFileAndLine(info->mFilename.get(), info->mLineNumber)
.setNoScriptRval(true);
if ((expression.IsEmpty() ||
!JS::Evaluate(aCx, global, options, expression.get(), expression.Length())) &&

Просмотреть файл

@ -4431,7 +4431,6 @@ JS::CompileOptions::CompileOptions(JSContext *cx, JSVersion version)
this->version = (version != JSVERSION_UNKNOWN) ? version : cx->findVersion();
compileAndGo = false;
noScriptRval = cx->options().noScriptRval();
strictOption = cx->runtime()->options().strictMode();
extraWarningsOption = cx->compartment()->options().extraWarnings(cx);
werrorOption = cx->runtime()->options().werror();

Просмотреть файл

@ -1517,8 +1517,7 @@ class JS_PUBLIC_API(ContextOptions) {
ContextOptions()
: privateIsNSISupports_(false),
dontReportUncaught_(false),
noDefaultCompartmentObject_(false),
noScriptRval_(false)
noDefaultCompartmentObject_(false)
{
}
@ -1552,21 +1551,10 @@ class JS_PUBLIC_API(ContextOptions) {
return *this;
}
bool noScriptRval() const { return noScriptRval_; }
ContextOptions &setNoScriptRval(bool flag) {
noScriptRval_ = flag;
return *this;
}
ContextOptions &toggleNoScriptRval() {
noScriptRval_ = !noScriptRval_;
return *this;
}
private:
bool privateIsNSISupports_ : 1;
bool dontReportUncaught_ : 1;
bool noDefaultCompartmentObject_ : 1;
bool noScriptRval_ : 1;
};
JS_PUBLIC_API(ContextOptions &)

Просмотреть файл

@ -423,14 +423,12 @@ RunFile(JSContext *cx, Handle<JSObject*> obj, const char *filename, FILE *file,
RootedScript script(cx);
{
JS::AutoSaveContextOptions asco(cx);
JS::ContextOptionsRef(cx).setNoScriptRval(true);
CompileOptions options(cx);
options.setIntroductionType("js shell file")
.setUTF8(true)
.setFileAndLine(filename, 1)
.setCompileAndGo(true);
.setCompileAndGo(true)
.setNoScriptRval(true);
gGotError = false;
(void) JS::Compile(cx, obj, options, file, &script);
@ -1247,8 +1245,6 @@ Evaluate(JSContext *cx, unsigned argc, jsval *vp)
RootedScript script(cx);
{
JS::AutoSaveContextOptions asco(cx);
JS::ContextOptionsRef(cx).setNoScriptRval(options.noScriptRval);
if (saveBytecode) {
if (!JS::CompartmentOptionsRef(cx).getSingletonsAsTemplates()) {
JS_ReportErrorNumber(cx, my_GetErrorMessage, nullptr,
@ -1458,13 +1454,11 @@ Run(JSContext *cx, unsigned argc, jsval *vp)
RootedScript script(cx);
int64_t startClock = PRMJ_Now();
{
JS::AutoSaveContextOptions asco(cx);
JS::ContextOptionsRef(cx).setNoScriptRval(true);
JS::CompileOptions options(cx);
options.setIntroductionType("js shell run")
.setFileAndLine(filename.ptr(), 1)
.setCompileAndGo(true);
.setCompileAndGo(true)
.setNoScriptRval(true);
if (!JS_CompileUCScript(cx, thisobj, ucbuf, buflen, options, &script))
return false;
}
@ -2186,14 +2180,12 @@ DisassFile(JSContext *cx, unsigned argc, jsval *vp)
RootedScript script(cx);
{
JS::AutoSaveContextOptions asco(cx);
JS::ContextOptionsRef(cx).setNoScriptRval(true);
CompileOptions options(cx);
options.setIntroductionType("js shell disFile")
.setUTF8(true)
.setFileAndLine(filename.ptr(), 1)
.setCompileAndGo(true);
.setCompileAndGo(true)
.setNoScriptRval(true);
if (!JS::Compile(cx, thisobj, options, filename.ptr(), &script))
return false;
@ -3332,12 +3324,11 @@ Compile(JSContext *cx, unsigned argc, jsval *vp)
if (!stableChars.initTwoByte(cx, scriptContents))
return false;
JS::AutoSaveContextOptions asco(cx);
JS::ContextOptionsRef(cx).setNoScriptRval(true);
JS::CompileOptions options(cx);
options.setIntroductionType("js shell compile")
.setFileAndLine("<string>", 1)
.setCompileAndGo(true);
.setCompileAndGo(true)
.setNoScriptRval(true);
RootedScript script(cx);
const jschar *chars = stableChars.twoByteRange().start().get();
bool ok = JS_CompileUCScript(cx, global, chars,