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];
|
||||
|
||||
if (entry.specifier) {
|
||||
specifier = compilationInfo.liftParserAtomToJSAtom(entry.specifier);
|
||||
specifier = compilationInfo.liftParserAtomToJSAtom(cx, entry.specifier);
|
||||
if (!specifier) {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
if (entry.localName) {
|
||||
localName = compilationInfo.liftParserAtomToJSAtom(entry.localName);
|
||||
localName = compilationInfo.liftParserAtomToJSAtom(cx, entry.localName);
|
||||
if (!localName) {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
if (entry.importName) {
|
||||
importName = compilationInfo.liftParserAtomToJSAtom(entry.importName);
|
||||
importName = compilationInfo.liftParserAtomToJSAtom(cx, entry.importName);
|
||||
if (!importName) {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
if (entry.exportName) {
|
||||
exportName = compilationInfo.liftParserAtomToJSAtom(entry.exportName);
|
||||
exportName = compilationInfo.liftParserAtomToJSAtom(cx, entry.exportName);
|
||||
if (!exportName) {
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -388,10 +388,10 @@ struct CompilationInfo {
|
||||
|
||||
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);
|
||||
}
|
||||
const ParserAtom* lowerJSAtomToParserAtom(JSAtom* atom) {
|
||||
const ParserAtom* lowerJSAtomToParserAtom(JSContext* cx, JSAtom* atom) {
|
||||
auto result = stencil.parserAtoms.internJSAtom(cx, *this, atom);
|
||||
return result.unwrapOr(nullptr);
|
||||
}
|
||||
|
@ -338,7 +338,7 @@ NameLocation EmitterScope::searchAndCache(BytecodeEmitter* bce,
|
||||
//
|
||||
// See bug 1660275.
|
||||
AutoEnterOOMUnsafeRegion oomUnsafe;
|
||||
JSAtom* jsname = bce->compilationInfo.liftParserAtomToJSAtom(name);
|
||||
JSAtom* jsname = bce->compilationInfo.liftParserAtomToJSAtom(bce->cx, name);
|
||||
if (!jsname) {
|
||||
oomUnsafe.crash("EmitterScope::searchAndCache");
|
||||
}
|
||||
|
@ -24,7 +24,8 @@
|
||||
|
||||
namespace js {
|
||||
|
||||
static bool InterpretObjLiteralValue(const ObjLiteralAtomVector& atoms,
|
||||
static bool InterpretObjLiteralValue(JSContext* cx,
|
||||
const ObjLiteralAtomVector& atoms,
|
||||
frontend::CompilationInfo& compilationInfo,
|
||||
const ObjLiteralInsn& insn,
|
||||
JS::Value* valOut) {
|
||||
@ -38,7 +39,7 @@ static bool InterpretObjLiteralValue(const ObjLiteralAtomVector& atoms,
|
||||
// This needs to be coalesced to wherever jsatom creation is eventually
|
||||
// Seems like InterpretLiteralObj would be called from main-thread
|
||||
// stencil instantiation.
|
||||
JSAtom* jsatom = compilationInfo.liftParserAtomToJSAtom(atoms[index]);
|
||||
JSAtom* jsatom = compilationInfo.liftParserAtomToJSAtom(cx, atoms[index]);
|
||||
if (!jsatom) {
|
||||
return false;
|
||||
}
|
||||
@ -88,7 +89,7 @@ static JSObject* InterpretObjLiteralObj(
|
||||
// since the other GC allocations in the function (properties vector,
|
||||
// etc.) would need to be addressed.
|
||||
const frontend::ParserAtom* atom = atoms[insn.getKey().getAtomIndex()];
|
||||
JSAtom* jsatom = compilationInfo.liftParserAtomToJSAtom(atom);
|
||||
JSAtom* jsatom = compilationInfo.liftParserAtomToJSAtom(cx, atom);
|
||||
if (!jsatom) {
|
||||
return nullptr;
|
||||
}
|
||||
@ -97,7 +98,8 @@ static JSObject* InterpretObjLiteralObj(
|
||||
|
||||
JS::Value propVal;
|
||||
if (!noValues) {
|
||||
if (!InterpretObjLiteralValue(atoms, compilationInfo, insn, &propVal)) {
|
||||
if (!InterpretObjLiteralValue(cx, atoms, compilationInfo, insn,
|
||||
&propVal)) {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
@ -131,7 +133,7 @@ static JSObject* InterpretObjLiteralArray(
|
||||
MOZ_ASSERT(insn.isValid());
|
||||
|
||||
JS::Value propVal;
|
||||
if (!InterpretObjLiteralValue(atoms, compilationInfo, insn, &propVal)) {
|
||||
if (!InterpretObjLiteralValue(cx, atoms, compilationInfo, insn, &propVal)) {
|
||||
return nullptr;
|
||||
}
|
||||
if (!elements.append(propVal)) {
|
||||
|
@ -2693,7 +2693,7 @@ bool Parser<FullParseHandler, Unit>::skipLazyInnerFunction(
|
||||
const ParserAtom* displayAtom = nullptr;
|
||||
if (fun->displayAtom()) {
|
||||
displayAtom =
|
||||
this->compilationInfo_.lowerJSAtomToParserAtom(fun->displayAtom());
|
||||
this->compilationInfo_.lowerJSAtomToParserAtom(cx_, fun->displayAtom());
|
||||
if (!displayAtom) {
|
||||
return false;
|
||||
}
|
||||
@ -3184,7 +3184,7 @@ FunctionNode* Parser<FullParseHandler, Unit>::standaloneLazyFunction(
|
||||
const ParserAtom* displayAtom = nullptr;
|
||||
if (fun->displayAtom()) {
|
||||
displayAtom =
|
||||
this->compilationInfo_.lowerJSAtomToParserAtom(fun->displayAtom());
|
||||
this->compilationInfo_.lowerJSAtomToParserAtom(cx_, fun->displayAtom());
|
||||
if (!displayAtom) {
|
||||
return null();
|
||||
}
|
||||
|
@ -271,10 +271,10 @@ class MOZ_STACK_CLASS ParserSharedBase : public JS::CustomAutoRooter {
|
||||
CompilationInfo& getCompilationInfo() { return compilationInfo_; }
|
||||
|
||||
JSAtom* liftParserAtomToJSAtom(const ParserAtom* parserAtom) {
|
||||
return compilationInfo_.liftParserAtomToJSAtom(parserAtom);
|
||||
return compilationInfo_.liftParserAtomToJSAtom(cx_, parserAtom);
|
||||
}
|
||||
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)
|
||||
: strict_(parent->sc()->strict()), asmJS_(parent->useAsmOrInsideUseAsm()) {}
|
||||
|
||||
inline JSAtom* SharedContext::liftParserAtomToJSAtom(const ParserAtom* atomId) {
|
||||
return compilationInfo_.liftParserAtomToJSAtom(atomId);
|
||||
inline JSAtom* SharedContext::liftParserAtomToJSAtom(JSContext* cx,
|
||||
const ParserAtom* atomId) {
|
||||
return compilationInfo_.liftParserAtomToJSAtom(cx, atomId);
|
||||
}
|
||||
inline const ParserAtom* SharedContext::lowerJSAtomToParserAtom(JSAtom* atom) {
|
||||
return compilationInfo_.lowerJSAtomToParserAtom(atom);
|
||||
inline const ParserAtom* SharedContext::lowerJSAtomToParserAtom(JSContext* cx,
|
||||
JSAtom* atom) {
|
||||
return compilationInfo_.lowerJSAtomToParserAtom(cx, atom);
|
||||
}
|
||||
|
||||
} // namespace frontend
|
||||
|
@ -277,8 +277,9 @@ class SharedContext {
|
||||
return retVal;
|
||||
}
|
||||
|
||||
inline JSAtom* liftParserAtomToJSAtom(const ParserAtom* atomId);
|
||||
inline const ParserAtom* lowerJSAtomToParserAtom(JSAtom* atom);
|
||||
inline JSAtom* liftParserAtomToJSAtom(JSContext* cx,
|
||||
const ParserAtom* atomId);
|
||||
inline const ParserAtom* lowerJSAtomToParserAtom(JSContext* cx, JSAtom* atom);
|
||||
|
||||
void copyScriptFields(ScriptStencil& script);
|
||||
};
|
||||
|
@ -187,7 +187,7 @@ static JSFunction* CreateFunction(JSContext* cx,
|
||||
RootedAtom displayAtom(cx);
|
||||
if (script.functionAtom) {
|
||||
displayAtom.set(
|
||||
compilationInfo.liftParserAtomToJSAtom(script.functionAtom));
|
||||
compilationInfo.liftParserAtomToJSAtom(cx, script.functionAtom));
|
||||
if (!displayAtom) {
|
||||
return nullptr;
|
||||
}
|
||||
@ -355,8 +355,8 @@ static bool SetTypeAndNameForExposedFunctions(JSContext* cx,
|
||||
JSAtom* funcAtom = nullptr;
|
||||
if (scriptStencil.functionFlags.hasInferredName() ||
|
||||
scriptStencil.functionFlags.hasGuessedAtom()) {
|
||||
funcAtom =
|
||||
compilationInfo.liftParserAtomToJSAtom(scriptStencil.functionAtom);
|
||||
funcAtom = compilationInfo.liftParserAtomToJSAtom(
|
||||
cx, scriptStencil.functionAtom);
|
||||
if (!funcAtom) {
|
||||
return false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user