mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 16:25:38 +00:00
Bug 1658971 - Part 8: Add JSContext* parameter to liftParserAtomToJSAtom and lowerJSAtomToParserAtom. r=tcampbell
Differential Revision: https://phabricator.services.mozilla.com/D88608
This commit is contained in:
parent
7b926b0020
commit
4e8d257ace
@ -1302,28 +1302,28 @@ static ArrayObject* ModuleBuilderInitArray(
|
|||||||
const frontend::StencilModuleEntry& entry = vector[i];
|
const frontend::StencilModuleEntry& entry = vector[i];
|
||||||
|
|
||||||
if (entry.specifier) {
|
if (entry.specifier) {
|
||||||
specifier = compilationInfo.liftParserAtomToJSAtom(entry.specifier);
|
specifier = compilationInfo.liftParserAtomToJSAtom(cx, entry.specifier);
|
||||||
if (!specifier) {
|
if (!specifier) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry.localName) {
|
if (entry.localName) {
|
||||||
localName = compilationInfo.liftParserAtomToJSAtom(entry.localName);
|
localName = compilationInfo.liftParserAtomToJSAtom(cx, entry.localName);
|
||||||
if (!localName) {
|
if (!localName) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry.importName) {
|
if (entry.importName) {
|
||||||
importName = compilationInfo.liftParserAtomToJSAtom(entry.importName);
|
importName = compilationInfo.liftParserAtomToJSAtom(cx, entry.importName);
|
||||||
if (!importName) {
|
if (!importName) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry.exportName) {
|
if (entry.exportName) {
|
||||||
exportName = compilationInfo.liftParserAtomToJSAtom(entry.exportName);
|
exportName = compilationInfo.liftParserAtomToJSAtom(cx, entry.exportName);
|
||||||
if (!exportName) {
|
if (!exportName) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -388,10 +388,10 @@ struct CompilationInfo {
|
|||||||
|
|
||||||
MOZ_MUST_USE bool instantiateStencils(CompilationGCOutput& gcOutput);
|
MOZ_MUST_USE bool instantiateStencils(CompilationGCOutput& gcOutput);
|
||||||
|
|
||||||
JSAtom* liftParserAtomToJSAtom(const ParserAtom* parserAtom) {
|
JSAtom* liftParserAtomToJSAtom(JSContext* cx, const ParserAtom* parserAtom) {
|
||||||
return parserAtom->toJSAtom(cx, *this).unwrapOr(nullptr);
|
return parserAtom->toJSAtom(cx, *this).unwrapOr(nullptr);
|
||||||
}
|
}
|
||||||
const ParserAtom* lowerJSAtomToParserAtom(JSAtom* atom) {
|
const ParserAtom* lowerJSAtomToParserAtom(JSContext* cx, JSAtom* atom) {
|
||||||
auto result = stencil.parserAtoms.internJSAtom(cx, *this, atom);
|
auto result = stencil.parserAtoms.internJSAtom(cx, *this, atom);
|
||||||
return result.unwrapOr(nullptr);
|
return result.unwrapOr(nullptr);
|
||||||
}
|
}
|
||||||
|
@ -338,7 +338,7 @@ NameLocation EmitterScope::searchAndCache(BytecodeEmitter* bce,
|
|||||||
//
|
//
|
||||||
// See bug 1660275.
|
// See bug 1660275.
|
||||||
AutoEnterOOMUnsafeRegion oomUnsafe;
|
AutoEnterOOMUnsafeRegion oomUnsafe;
|
||||||
JSAtom* jsname = bce->compilationInfo.liftParserAtomToJSAtom(name);
|
JSAtom* jsname = bce->compilationInfo.liftParserAtomToJSAtom(bce->cx, name);
|
||||||
if (!jsname) {
|
if (!jsname) {
|
||||||
oomUnsafe.crash("EmitterScope::searchAndCache");
|
oomUnsafe.crash("EmitterScope::searchAndCache");
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,8 @@
|
|||||||
|
|
||||||
namespace js {
|
namespace js {
|
||||||
|
|
||||||
static bool InterpretObjLiteralValue(const ObjLiteralAtomVector& atoms,
|
static bool InterpretObjLiteralValue(JSContext* cx,
|
||||||
|
const ObjLiteralAtomVector& atoms,
|
||||||
frontend::CompilationInfo& compilationInfo,
|
frontend::CompilationInfo& compilationInfo,
|
||||||
const ObjLiteralInsn& insn,
|
const ObjLiteralInsn& insn,
|
||||||
JS::Value* valOut) {
|
JS::Value* valOut) {
|
||||||
@ -38,7 +39,7 @@ static bool InterpretObjLiteralValue(const ObjLiteralAtomVector& atoms,
|
|||||||
// This needs to be coalesced to wherever jsatom creation is eventually
|
// This needs to be coalesced to wherever jsatom creation is eventually
|
||||||
// Seems like InterpretLiteralObj would be called from main-thread
|
// Seems like InterpretLiteralObj would be called from main-thread
|
||||||
// stencil instantiation.
|
// stencil instantiation.
|
||||||
JSAtom* jsatom = compilationInfo.liftParserAtomToJSAtom(atoms[index]);
|
JSAtom* jsatom = compilationInfo.liftParserAtomToJSAtom(cx, atoms[index]);
|
||||||
if (!jsatom) {
|
if (!jsatom) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -88,7 +89,7 @@ static JSObject* InterpretObjLiteralObj(
|
|||||||
// since the other GC allocations in the function (properties vector,
|
// since the other GC allocations in the function (properties vector,
|
||||||
// etc.) would need to be addressed.
|
// etc.) would need to be addressed.
|
||||||
const frontend::ParserAtom* atom = atoms[insn.getKey().getAtomIndex()];
|
const frontend::ParserAtom* atom = atoms[insn.getKey().getAtomIndex()];
|
||||||
JSAtom* jsatom = compilationInfo.liftParserAtomToJSAtom(atom);
|
JSAtom* jsatom = compilationInfo.liftParserAtomToJSAtom(cx, atom);
|
||||||
if (!jsatom) {
|
if (!jsatom) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@ -97,7 +98,8 @@ static JSObject* InterpretObjLiteralObj(
|
|||||||
|
|
||||||
JS::Value propVal;
|
JS::Value propVal;
|
||||||
if (!noValues) {
|
if (!noValues) {
|
||||||
if (!InterpretObjLiteralValue(atoms, compilationInfo, insn, &propVal)) {
|
if (!InterpretObjLiteralValue(cx, atoms, compilationInfo, insn,
|
||||||
|
&propVal)) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -131,7 +133,7 @@ static JSObject* InterpretObjLiteralArray(
|
|||||||
MOZ_ASSERT(insn.isValid());
|
MOZ_ASSERT(insn.isValid());
|
||||||
|
|
||||||
JS::Value propVal;
|
JS::Value propVal;
|
||||||
if (!InterpretObjLiteralValue(atoms, compilationInfo, insn, &propVal)) {
|
if (!InterpretObjLiteralValue(cx, atoms, compilationInfo, insn, &propVal)) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
if (!elements.append(propVal)) {
|
if (!elements.append(propVal)) {
|
||||||
|
@ -2693,7 +2693,7 @@ bool Parser<FullParseHandler, Unit>::skipLazyInnerFunction(
|
|||||||
const ParserAtom* displayAtom = nullptr;
|
const ParserAtom* displayAtom = nullptr;
|
||||||
if (fun->displayAtom()) {
|
if (fun->displayAtom()) {
|
||||||
displayAtom =
|
displayAtom =
|
||||||
this->compilationInfo_.lowerJSAtomToParserAtom(fun->displayAtom());
|
this->compilationInfo_.lowerJSAtomToParserAtom(cx_, fun->displayAtom());
|
||||||
if (!displayAtom) {
|
if (!displayAtom) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -3184,7 +3184,7 @@ FunctionNode* Parser<FullParseHandler, Unit>::standaloneLazyFunction(
|
|||||||
const ParserAtom* displayAtom = nullptr;
|
const ParserAtom* displayAtom = nullptr;
|
||||||
if (fun->displayAtom()) {
|
if (fun->displayAtom()) {
|
||||||
displayAtom =
|
displayAtom =
|
||||||
this->compilationInfo_.lowerJSAtomToParserAtom(fun->displayAtom());
|
this->compilationInfo_.lowerJSAtomToParserAtom(cx_, fun->displayAtom());
|
||||||
if (!displayAtom) {
|
if (!displayAtom) {
|
||||||
return null();
|
return null();
|
||||||
}
|
}
|
||||||
|
@ -271,10 +271,10 @@ class MOZ_STACK_CLASS ParserSharedBase : public JS::CustomAutoRooter {
|
|||||||
CompilationInfo& getCompilationInfo() { return compilationInfo_; }
|
CompilationInfo& getCompilationInfo() { return compilationInfo_; }
|
||||||
|
|
||||||
JSAtom* liftParserAtomToJSAtom(const ParserAtom* parserAtom) {
|
JSAtom* liftParserAtomToJSAtom(const ParserAtom* parserAtom) {
|
||||||
return compilationInfo_.liftParserAtomToJSAtom(parserAtom);
|
return compilationInfo_.liftParserAtomToJSAtom(cx_, parserAtom);
|
||||||
}
|
}
|
||||||
const ParserAtom* lowerJSAtomToParserAtom(JSAtom* atom) {
|
const ParserAtom* lowerJSAtomToParserAtom(JSAtom* atom) {
|
||||||
return compilationInfo_.lowerJSAtomToParserAtom(atom);
|
return compilationInfo_.lowerJSAtomToParserAtom(cx_, atom);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -16,11 +16,13 @@ namespace frontend {
|
|||||||
inline Directives::Directives(ParseContext* parent)
|
inline Directives::Directives(ParseContext* parent)
|
||||||
: strict_(parent->sc()->strict()), asmJS_(parent->useAsmOrInsideUseAsm()) {}
|
: strict_(parent->sc()->strict()), asmJS_(parent->useAsmOrInsideUseAsm()) {}
|
||||||
|
|
||||||
inline JSAtom* SharedContext::liftParserAtomToJSAtom(const ParserAtom* atomId) {
|
inline JSAtom* SharedContext::liftParserAtomToJSAtom(JSContext* cx,
|
||||||
return compilationInfo_.liftParserAtomToJSAtom(atomId);
|
const ParserAtom* atomId) {
|
||||||
|
return compilationInfo_.liftParserAtomToJSAtom(cx, atomId);
|
||||||
}
|
}
|
||||||
inline const ParserAtom* SharedContext::lowerJSAtomToParserAtom(JSAtom* atom) {
|
inline const ParserAtom* SharedContext::lowerJSAtomToParserAtom(JSContext* cx,
|
||||||
return compilationInfo_.lowerJSAtomToParserAtom(atom);
|
JSAtom* atom) {
|
||||||
|
return compilationInfo_.lowerJSAtomToParserAtom(cx, atom);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace frontend
|
} // namespace frontend
|
||||||
|
@ -277,8 +277,9 @@ class SharedContext {
|
|||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline JSAtom* liftParserAtomToJSAtom(const ParserAtom* atomId);
|
inline JSAtom* liftParserAtomToJSAtom(JSContext* cx,
|
||||||
inline const ParserAtom* lowerJSAtomToParserAtom(JSAtom* atom);
|
const ParserAtom* atomId);
|
||||||
|
inline const ParserAtom* lowerJSAtomToParserAtom(JSContext* cx, JSAtom* atom);
|
||||||
|
|
||||||
void copyScriptFields(ScriptStencil& script);
|
void copyScriptFields(ScriptStencil& script);
|
||||||
};
|
};
|
||||||
|
@ -187,7 +187,7 @@ static JSFunction* CreateFunction(JSContext* cx,
|
|||||||
RootedAtom displayAtom(cx);
|
RootedAtom displayAtom(cx);
|
||||||
if (script.functionAtom) {
|
if (script.functionAtom) {
|
||||||
displayAtom.set(
|
displayAtom.set(
|
||||||
compilationInfo.liftParserAtomToJSAtom(script.functionAtom));
|
compilationInfo.liftParserAtomToJSAtom(cx, script.functionAtom));
|
||||||
if (!displayAtom) {
|
if (!displayAtom) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@ -355,8 +355,8 @@ static bool SetTypeAndNameForExposedFunctions(JSContext* cx,
|
|||||||
JSAtom* funcAtom = nullptr;
|
JSAtom* funcAtom = nullptr;
|
||||||
if (scriptStencil.functionFlags.hasInferredName() ||
|
if (scriptStencil.functionFlags.hasInferredName() ||
|
||||||
scriptStencil.functionFlags.hasGuessedAtom()) {
|
scriptStencil.functionFlags.hasGuessedAtom()) {
|
||||||
funcAtom =
|
funcAtom = compilationInfo.liftParserAtomToJSAtom(
|
||||||
compilationInfo.liftParserAtomToJSAtom(scriptStencil.functionAtom);
|
cx, scriptStencil.functionAtom);
|
||||||
if (!funcAtom) {
|
if (!funcAtom) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user