Bug 1687973 - Part 8: Cleanup ParseTask::parse code flow. r=tcampbell

Differential Revision: https://phabricator.services.mozilla.com/D131362
This commit is contained in:
Tooru Fujisawa 2021-11-19 04:43:05 +00:00
Родитель 4887469061
Коммит 6b1a90a4ea
1 изменённых файлов: 30 добавлений и 24 удалений

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

@ -637,18 +637,21 @@ void ScriptParseTask<Unit>::parse(JSContext* cx) {
options.nonSyntacticScope ? ScopeKind::NonSyntactic : ScopeKind::Global;
stencilInput_ = cx->make_unique<frontend::CompilationInput>(options);
if (stencilInput_) {
extensibleStencil_ = frontend::CompileGlobalScriptToExtensibleStencil(
cx, *stencilInput_, data, scopeKind);
if (!stencilInput_) {
return;
}
if (extensibleStencil_) {
frontend::BorrowingCompilationStencil borrowingStencil(*extensibleStencil_);
if (!frontend::PrepareForInstantiate(cx, *stencilInput_, borrowingStencil,
gcOutput_)) {
extensibleStencil_ = nullptr;
}
extensibleStencil_ = frontend::CompileGlobalScriptToExtensibleStencil(
cx, *stencilInput_, data, scopeKind);
if (!extensibleStencil_) {
return;
}
frontend::BorrowingCompilationStencil borrowingStencil(*extensibleStencil_);
if (!frontend::PrepareForInstantiate(cx, *stencilInput_, borrowingStencil,
gcOutput_)) {
extensibleStencil_.reset();
}
}
@ -677,11 +680,12 @@ void CompileToStencilTask<Unit>::parse(JSContext* cx) {
options.nonSyntacticScope ? ScopeKind::NonSyntactic : ScopeKind::Global;
stencilInput_ = cx->make_unique<frontend::CompilationInput>(options);
if (stencilInput_) {
extensibleStencil_ = frontend::CompileGlobalScriptToExtensibleStencil(
cx, *stencilInput_, data, scopeKind);
if (!stencilInput_) {
return;
}
extensibleStencil_ = frontend::CompileGlobalScriptToExtensibleStencil(
cx, *stencilInput_, data, scopeKind);
}
bool ParseTask::instantiateStencils(JSContext* cx) {
@ -728,18 +732,20 @@ void ModuleParseTask<Unit>::parse(JSContext* cx) {
options.setModule();
stencilInput_ = cx->make_unique<frontend::CompilationInput>(options);
if (stencilInput_) {
extensibleStencil_ =
frontend::ParseModuleToExtensibleStencil(cx, *stencilInput_, data);
if (!stencilInput_) {
return;
}
if (extensibleStencil_) {
frontend::BorrowingCompilationStencil borrowingStencil(*extensibleStencil_);
if (!frontend::PrepareForInstantiate(cx, *stencilInput_, borrowingStencil,
gcOutput_)) {
extensibleStencil_ = nullptr;
}
extensibleStencil_ =
frontend::ParseModuleToExtensibleStencil(cx, *stencilInput_, data);
if (!extensibleStencil_) {
return;
}
frontend::BorrowingCompilationStencil borrowingStencil(*extensibleStencil_);
if (!frontend::PrepareForInstantiate(cx, *stencilInput_, borrowingStencil,
gcOutput_)) {
extensibleStencil_.reset();
}
}