mirror of
https://github.com/classilla/tenfourfox.git
synced 2025-02-07 09:31:28 +00:00
Bug 1071646 - Cast ParseNode to Definition using as<T>. (r=jorendorff)
This commit is contained in:
parent
884bd2ab53
commit
feba46e3f4
@ -1738,7 +1738,7 @@ BytecodeEmitter::bindNameToSlotHelper(ParseNode* pn)
|
||||
MOZ_ASSERT(dn->isDefn());
|
||||
pn->pn_dflags |= (dn->pn_dflags & PND_CONST);
|
||||
} else if (pn->isDefn()) {
|
||||
dn = (Definition*) pn;
|
||||
dn = &pn->as<Definition>();
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
@ -1612,6 +1612,8 @@ struct Definition : public ParseNode
|
||||
IMPORT
|
||||
};
|
||||
|
||||
static bool test(const ParseNode& pn) { return pn.isDefn(); }
|
||||
|
||||
bool canHaveInitializer() { return int(kind()) <= int(ARG); }
|
||||
|
||||
static const char* kindString(Kind kind);
|
||||
|
@ -103,9 +103,7 @@ ParseContext<FullParseHandler>::checkLocalsOverflow(TokenStream& ts)
|
||||
static void
|
||||
MarkUsesAsHoistedLexical(ParseNode* pn)
|
||||
{
|
||||
MOZ_ASSERT(pn->isDefn());
|
||||
|
||||
Definition* dn = (Definition*)pn;
|
||||
Definition* dn = &pn->as<Definition>();
|
||||
ParseNode** pnup = &dn->dn_uses;
|
||||
ParseNode* pnu;
|
||||
unsigned start = pn->pn_blockid;
|
||||
@ -222,6 +220,8 @@ ParseContext<FullParseHandler>::define(TokenStream& ts,
|
||||
MOZ_ASSERT(!pn->isUsed());
|
||||
MOZ_ASSERT_IF(pn->isDefn(), pn->isPlaceholder());
|
||||
|
||||
pn->setDefn(true);
|
||||
|
||||
Definition* prevDef = nullptr;
|
||||
if (kind == Definition::LET || kind == Definition::CONSTANT)
|
||||
prevDef = decls_.lookupFirst(name);
|
||||
@ -240,7 +240,7 @@ ParseContext<FullParseHandler>::define(TokenStream& ts,
|
||||
while ((pnu = *pnup) != nullptr && pnu->pn_blockid >= start) {
|
||||
MOZ_ASSERT(pnu->pn_blockid >= bodyid);
|
||||
MOZ_ASSERT(pnu->isUsed());
|
||||
pnu->pn_lexdef = (Definition*) pn;
|
||||
pnu->pn_lexdef = &pn->as<Definition>();
|
||||
pn->pn_dflags |= pnu->pn_dflags & PND_USE2DEF_FLAGS;
|
||||
pnup = &pnu->pn_link;
|
||||
}
|
||||
@ -258,12 +258,11 @@ ParseContext<FullParseHandler>::define(TokenStream& ts,
|
||||
}
|
||||
|
||||
MOZ_ASSERT_IF(kind != Definition::LET && kind != Definition::CONSTANT, !lexdeps->lookup(name));
|
||||
pn->setDefn(true);
|
||||
pn->pn_dflags &= ~PND_PLACEHOLDER;
|
||||
if (kind == Definition::CONSTANT)
|
||||
pn->pn_dflags |= PND_CONST;
|
||||
|
||||
Definition* dn = (Definition*)pn;
|
||||
Definition* dn = &pn->as<Definition>();
|
||||
switch (kind) {
|
||||
case Definition::ARG:
|
||||
MOZ_ASSERT(sc->isFunctionBox());
|
||||
@ -393,7 +392,7 @@ ParseContext<ParseHandler>::updateDecl(TokenStream& ts, JSAtom* atom, Node pn)
|
||||
Definition* oldDecl = decls_.lookupFirst(atom);
|
||||
|
||||
pn->setDefn(true);
|
||||
Definition* newDecl = (Definition*)pn;
|
||||
Definition* newDecl = &pn->template as<Definition>();
|
||||
decls_.updateFirst(atom, newDecl);
|
||||
|
||||
if (sc->isGlobalContext() || oldDecl->isDeoptimized()) {
|
||||
@ -1397,7 +1396,7 @@ Parser<FullParseHandler>::makeDefIntoUse(Definition* dn, ParseNode* pn, HandleAt
|
||||
for (ParseNode* pnu = dn->dn_uses; pnu; pnu = pnu->pn_link) {
|
||||
MOZ_ASSERT(pnu->isUsed());
|
||||
MOZ_ASSERT(!pnu->isDefn());
|
||||
pnu->pn_lexdef = (Definition*) pn;
|
||||
pnu->pn_lexdef = &pn->as<Definition>();
|
||||
pn->pn_dflags |= pnu->pn_dflags & PND_USE2DEF_FLAGS;
|
||||
}
|
||||
pn->pn_dflags |= dn->pn_dflags & PND_USE2DEF_FLAGS;
|
||||
@ -1440,7 +1439,7 @@ Parser<FullParseHandler>::makeDefIntoUse(Definition* dn, ParseNode* pn, HandleAt
|
||||
return false;
|
||||
pn->dn_uses = lhs;
|
||||
dn->pn_link = nullptr;
|
||||
dn = (Definition*) lhs;
|
||||
dn = &lhs->as<Definition>();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1451,7 +1450,7 @@ Parser<FullParseHandler>::makeDefIntoUse(Definition* dn, ParseNode* pn, HandleAt
|
||||
dn->setOp((CodeSpec[dn->getOp()].format & JOF_SET) ? JSOP_SETNAME : JSOP_GETNAME);
|
||||
dn->setDefn(false);
|
||||
dn->setUsed(true);
|
||||
dn->pn_lexdef = (Definition*) pn;
|
||||
dn->pn_lexdef = &pn->as<Definition>();
|
||||
dn->pn_scopecoord.makeFree();
|
||||
dn->pn_dflags &= ~PND_BOUND;
|
||||
return true;
|
||||
@ -2399,8 +2398,7 @@ Parser<FullParseHandler>::checkFunctionDefinition(HandlePropertyName funName,
|
||||
if (!data.bind(funName, this))
|
||||
return false;
|
||||
|
||||
MOZ_ASSERT(varNode->isDefn());
|
||||
annexDef = static_cast<Definition*>(varNode);
|
||||
annexDef = &varNode->as<Definition>();
|
||||
|
||||
synthesizedDeclarationList = handler.newDeclarationList(PNK_VAR, JSOP_DEFVAR);
|
||||
if (!synthesizedDeclarationList)
|
||||
|
Loading…
x
Reference in New Issue
Block a user