Bug 923614 - Remove assert, improve OOM handling in PropertyReadNeedsTypeBarrier. r=jandem, a=bkerensa
authorBrian Hackett <bhackett1024@gmail.com>
Tue, 10 Dec 2013 08:34:47 -0800
changeset 224638 d9a1af3800c5ccc6008b194bf8f227686a6cad79
parent 224637 fd6c34135c45fe1963cb7b2d5894ddbaf55605fc
child 224639 7ce333a03499352094b659d273a7d361273cfc7d
push id6
push userryanvm@gmail.com
push dateMon, 12 Jan 2015 22:04:06 +0000
treeherdermozilla-b2g37_v2_2@895c8fc7b734 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjandem, bkerensa
bugs923614
milestone28.0a2
Bug 923614 - Remove assert, improve OOM handling in PropertyReadNeedsTypeBarrier. r=jandem, a=bkerensa
js/src/jit/IonBuilder.cpp
js/src/jit/MIR.cpp
--- a/js/src/jit/IonBuilder.cpp
+++ b/js/src/jit/IonBuilder.cpp
@@ -3841,17 +3841,16 @@ IonBuilder::inlineScriptedCall(CallInfo 
                                                      this->info().executionMode());
     if (!info)
         return false;
 
     MIRGraphReturns returns(alloc());
     AutoAccumulateReturns aar(graph(), returns);
 
     // Build the graph.
-    JS_ASSERT_IF(analysisContext, !analysisContext->isExceptionPending());
     IonBuilder inlineBuilder(analysisContext, compartment,
                              &alloc(), &graph(), constraints(), &inspector, info, nullptr,
                              inliningDepth_ + 1, loopDepth_);
     if (!inlineBuilder.buildInline(this, outerResumePoint, callInfo)) {
         if (analysisContext && analysisContext->isExceptionPending()) {
             IonSpew(IonSpew_Abort, "Inline builder raised exception.");
             abortReason_ = AbortReason_Error;
             return false;
--- a/js/src/jit/MIR.cpp
+++ b/js/src/jit/MIR.cpp
@@ -2953,20 +2953,20 @@ jit::PropertyReadNeedsTypeBarrier(JSCont
             if (propertycx)
                 typeObj->ensureTrackedProperty(propertycx, NameToId(name));
 
             if (!typeObj->unknownProperties()) {
                 types::HeapTypeSetKey property = typeObj->property(NameToId(name));
                 if (property.maybeTypes()) {
                     types::TypeSet::TypeList types;
                     if (!property.maybeTypes()->enumerateTypes(&types))
-                        return false;
+                        break;
                     if (types.length()) {
-                        if (!observed->addType(types[0], GetIonContext()->temp->lifoAlloc()))
-                            return false;
+                        // Note: the return value here is ignored.
+                        observed->addType(types[0], GetIonContext()->temp->lifoAlloc());
                         break;
                     }
                 }
             }
 
             obj = obj->getProto();
         }
     }