Bug 1011474 - Work around a codegen bug on ARM; r=sfink
authorTerrence Cole <terrence@mozilla.com>
Mon, 09 Jun 2014 12:15:54 -0700
changeset 187813 37fdae0f24d29d43629df2d21db9211b213f4b22
parent 187812 654a3fc28fa2b55f0720cde6c07943a4b3ffcf36
child 187814 2d7dcf4f98b83ed66d7adc0ea524d578f2494280
push id26934
push userryanvm@gmail.com
push dateTue, 10 Jun 2014 04:45:09 +0000
treeherdermozilla-central@9dc0ffca10f4 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssfink
bugs1011474
milestone32.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 1011474 - Work around a codegen bug on ARM; r=sfink
js/src/jit/IonMacroAssembler.cpp
--- a/js/src/jit/IonMacroAssembler.cpp
+++ b/js/src/jit/IonMacroAssembler.cpp
@@ -543,16 +543,23 @@ MacroAssembler::callFreeStub(Register sl
 
 // Inlined equivalent of gc::AllocateObject, without failure case handling.
 void
 MacroAssembler::allocateObject(Register result, Register slots, gc::AllocKind allocKind,
                                uint32_t nDynamicSlots, gc::InitialHeap initialHeap, Label *fail)
 {
     JS_ASSERT(allocKind >= gc::FINALIZE_OBJECT0 && allocKind <= gc::FINALIZE_OBJECT_LAST);
 
+#ifdef JS_CODEGEN_ARM
+    // Bug 1011474: Always take the ool path when allocating malloc slots on
+    //              ARM to work around a top-crasher while we investigate.
+    if (nDynamicSlots)
+        return jump(fail);
+#endif
+
     checkAllocatorState(fail);
 
     if (shouldNurseryAllocate(allocKind, initialHeap))
         return nurseryAllocate(result, slots, allocKind, nDynamicSlots, initialHeap, fail);
 
     if (!nDynamicSlots)
         return freeSpanAllocate(result, slots, allocKind, fail);