Bug 1359653: Part 2 - Allow CloneAndExecuteScript with non-lexical scripts. r=shu

MozReview-Commit-ID: Hq3rvgjwH3f

--HG--
extra : source : 3f94cd9d95b99436ea5f77aee5d220092b6b32d6
This commit is contained in:
Kris Maglione 2017-05-02 17:53:51 -07:00
Родитель 81232b555a
Коммит 16393582a7
2 изменённых файлов: 26 добавлений и 0 удалений

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

@ -4590,6 +4590,23 @@ JS::CloneAndExecuteScript(JSContext* cx, HandleScript scriptArg,
return ExecuteScript(cx, globalLexical, script, rval.address());
}
JS_PUBLIC_API(bool)
JS::CloneAndExecuteScript(JSContext* cx, JS::AutoObjectVector& envChain,
HandleScript scriptArg,
JS::MutableHandleValue rval)
{
CHECK_REQUEST(cx);
RootedScript script(cx, scriptArg);
if (script->compartment() != cx->compartment()) {
script = CloneGlobalScript(cx, ScopeKind::NonSyntactic, script);
if (!script)
return false;
js::Debugger::onNewScript(cx, script);
}
return ExecuteScript(cx, envChain, script, rval.address());
}
static const unsigned LARGE_SCRIPT_LENGTH = 500*1024;
static bool

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

@ -4383,6 +4383,15 @@ extern JS_PUBLIC_API(bool)
CloneAndExecuteScript(JSContext* cx, JS::Handle<JSScript*> script,
JS::MutableHandleValue rval);
/**
* Like CloneAndExecuteScript above, but allows executing under a non-syntactic
* environment chain.
*/
extern JS_PUBLIC_API(bool)
CloneAndExecuteScript(JSContext* cx, JS::AutoObjectVector& envChain,
JS::Handle<JSScript*> script,
JS::MutableHandleValue rval);
} /* namespace JS */
namespace JS {