mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 22:05:44 +00:00
Bug 499790 - common sub-expression elim for repeated (PND_ASSIGNED | PND_FUNARG), r=mrbkap.
This commit is contained in:
parent
29e68cb007
commit
c1bd7212b8
@ -1270,7 +1270,7 @@ Define(JSParseNode *pn, JSAtom *atom, JSTreeContext *tc, bool let = false)
|
||||
while ((pnu = *pnup) != NULL && pnu->pn_blockid >= start) {
|
||||
JS_ASSERT(pnu->pn_used);
|
||||
pnu->pn_lexdef = (JSDefinition *) pn;
|
||||
pn->pn_dflags |= pnu->pn_dflags & (PND_ASSIGNED | PND_FUNARG);
|
||||
pn->pn_dflags |= pnu->pn_dflags & PND_USE2DEF_FLAGS;
|
||||
pnup = &pnu->pn_link;
|
||||
}
|
||||
|
||||
@ -1386,9 +1386,9 @@ MakeDefIntoUse(JSDefinition *dn, JSParseNode *pn, JSAtom *atom, JSTreeContext *t
|
||||
JS_ASSERT(pnu->pn_used);
|
||||
JS_ASSERT(!pnu->pn_defn);
|
||||
pnu->pn_lexdef = (JSDefinition *) pn;
|
||||
pn->pn_dflags |= pnu->pn_dflags & (PND_ASSIGNED | PND_FUNARG);
|
||||
pn->pn_dflags |= pnu->pn_dflags & PND_USE2DEF_FLAGS;
|
||||
}
|
||||
pn->pn_dflags |= dn->pn_dflags & (PND_ASSIGNED | PND_FUNARG);
|
||||
pn->pn_dflags |= dn->pn_dflags & PND_USE2DEF_FLAGS;
|
||||
pn->dn_uses = dn;
|
||||
|
||||
dn->pn_defn = false;
|
||||
@ -4335,7 +4335,7 @@ RebindLets(JSParseNode *pn, JSTreeContext *tc)
|
||||
JSDefinition *dn = ALE_DEFN(ale);
|
||||
dn->pn_type = TOK_NAME;
|
||||
dn->pn_op = JSOP_NOP;
|
||||
dn->pn_dflags |= pn->pn_dflags & (PND_ASSIGNED | PND_FUNARG);
|
||||
dn->pn_dflags |= pn->pn_dflags & PND_USE2DEF_FLAGS;
|
||||
}
|
||||
LinkUseToDef(pn, ALE_DEFN(ale), tc);
|
||||
}
|
||||
@ -6403,7 +6403,7 @@ CompExprTransplanter::transplant(JSParseNode *pn)
|
||||
JSParseNode *pnu;
|
||||
while ((pnu = *pnup) != NULL && pnu->pn_pos >= root->pn_pos) {
|
||||
pnu->pn_lexdef = dn2;
|
||||
dn2->pn_dflags |= pnu->pn_dflags & (PND_ASSIGNED | PND_FUNARG);
|
||||
dn2->pn_dflags |= pnu->pn_dflags & PND_USE2DEF_FLAGS;
|
||||
pnup = &pnu->pn_link;
|
||||
}
|
||||
dn2->dn_uses = dn->dn_uses;
|
||||
|
@ -418,6 +418,9 @@ struct JSParseNode {
|
||||
#define PND_FUNARG 0x100 /* downward or upward funarg usage */
|
||||
#define PND_BOUND 0x200 /* bound to a stack or global slot */
|
||||
|
||||
/* Flags to propagate from uses to definition. */
|
||||
#define PND_USE2DEF_FLAGS (PND_ASSIGNED | PND_FUNARG)
|
||||
|
||||
/* PN_LIST pn_xflags bits. */
|
||||
#define PNX_STRCAT 0x01 /* TOK_PLUS list has string term */
|
||||
#define PNX_CANTFOLD 0x02 /* TOK_PLUS list has unfoldable term */
|
||||
|
Loading…
Reference in New Issue
Block a user