From 1d25d2ad4ece96fd6279f31dbaa11b71ea913057 Mon Sep 17 00:00:00 2001 From: Jeff Walden Date: Tue, 19 May 2015 15:45:55 -0700 Subject: [PATCH] Bug 1167823 - Handle more nodes by kind when checking for side effects. r=shu --HG-- extra : rebase_source : d911d8d47cb09b5c43938f5d011cce862b1a454d --- js/src/frontend/BytecodeEmitter.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/js/src/frontend/BytecodeEmitter.cpp b/js/src/frontend/BytecodeEmitter.cpp index 31231108cb5a..c874e85c409f 100644 --- a/js/src/frontend/BytecodeEmitter.cpp +++ b/js/src/frontend/BytecodeEmitter.cpp @@ -2299,15 +2299,14 @@ BytecodeEmitter::checkSideEffects(ParseNode* pn, bool* answer) *answer = pn->pn_count > 1; return true; - case PNK_EXPORT_BATCH_SPEC: - case PNK_ARGSBODY: case PNK_ARRAYCOMP: - case PNK_EXPORT_SPEC_LIST: - case PNK_IMPORT_SPEC_LIST: - case PNK_EXPORT_SPEC: - case PNK_IMPORT_SPEC: - case PNK_CALLSITEOBJ: - break; // for now + MOZ_ASSERT(pn->isArity(PN_LIST)); + MOZ_ASSERT(pn->pn_count == 1); + return checkSideEffects(pn->pn_head, answer); + + case PNK_ARGSBODY: + *answer = true; + return true; case PNK_FORIN: // by PNK_FOR case PNK_FOROF: // by PNK_FOR @@ -2316,6 +2315,12 @@ BytecodeEmitter::checkSideEffects(ParseNode* pn, bool* answer) case PNK_CLASSMETHOD: // by PNK_CLASS case PNK_CLASSNAMES: // by PNK_CLASS case PNK_CLASSMETHODLIST: // by PNK_CLASS + case PNK_IMPORT_SPEC_LIST: // by PNK_IMPORT + case PNK_IMPORT_SPEC: // by PNK_IMPORT + case PNK_EXPORT_BATCH_SPEC:// by PNK_EXPORT + case PNK_EXPORT_SPEC_LIST: // by PNK_EXPORT + case PNK_EXPORT_SPEC: // by PNK_EXPORT + case PNK_CALLSITEOBJ: // by PNK_TAGGED_TEMPLATE MOZ_CRASH("handled by parent nodes"); case PNK_LIMIT: // invalid sentinel value