Bug 1115246 - Assertion failure: !cx->isExceptionPending(), at js/src/jscntxtinlines.h, r=jandem
☠☠ backed out by c139cf2e487d ☠ ☠
authorBrian Hackett <bhackett1024@gmail.com>
Mon, 29 Dec 2014 16:02:49 -0800
changeset 247420 9878f361d7f765666ce96bd455a79f3056bad0dd
parent 247419 b8947f95021df2eac9ad1e8eb80e167b5fed3b1a
child 247421 c603370ae39dc11c862e0ab330dc7bb637ee0407
push id4489
push userraliiev@mozilla.com
push dateMon, 23 Feb 2015 15:17:55 +0000
treeherdermozilla-beta@fd7c3dc24146 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjandem
bugs1115246
milestone37.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1115246 - Assertion failure: !cx->isExceptionPending(), at js/src/jscntxtinlines.h, r=jandem
js/src/frontend/BytecodeEmitter.cpp
--- a/js/src/frontend/BytecodeEmitter.cpp
+++ b/js/src/frontend/BytecodeEmitter.cpp
@@ -7187,20 +7187,20 @@ frontend::EmitTree(ExclusiveContext *cx,
                 ok = EmitSingletonInitialiser(cx, bce, pn);
                 break;
             }
 
             // If the array consists entirely of primitive values, make a
             // template object with copy on write elements that can be reused
             // every time the initializer executes.
             RootedValue value(cx);
-            if (bce->emitterMode != BytecodeEmitter::SelfHosting &&
-                pn->pn_count != 0 &&
-                pn->getConstantValue(cx, ParseNode::DontAllowNestedObjects, &value))
-            {
+            if (bce->emitterMode != BytecodeEmitter::SelfHosting && pn->pn_count != 0) {
+                if (!pn->getConstantValue(cx, ParseNode::DontAllowNestedObjects, &value))
+                    return false;
+
                 // Note: the type of the template object might not yet reflect
                 // that the object has copy on write elements. When the
                 // interpreter or JIT compiler fetches the template, it should
                 // use types::GetOrFixupCopyOnWriteObject to make sure the type
                 // for the template is accurate. We don't do this here as we
                 // want to use types::InitObject, which requires a finished
                 // script.
                 NativeObject *obj = &value.toObject().as<NativeObject>();