Index: src/mips/builtins-mips.cc |
diff --git a/src/mips/builtins-mips.cc b/src/mips/builtins-mips.cc |
index 1687abe8803ec351e8e285e038013eabb2c69be6..bc373e45cb0df65e41ba4a1d496d3e07d9cb6128 100644 |
--- a/src/mips/builtins-mips.cc |
+++ b/src/mips/builtins-mips.cc |
@@ -106,7 +106,10 @@ static void AllocateEmptyJSArray(MacroAssembler* masm, |
// Allocate the JSArray object together with space for a fixed array with the |
// requested elements. |
- int size = JSArray::kSize + FixedArray::SizeFor(initial_capacity); |
+ int size = JSArray::kSize; |
+ if (initial_capacity > 0) { |
+ size += FixedArray::SizeFor(initial_capacity); |
+ } |
__ AllocateInNewSpace(size, |
result, |
scratch2, |
@@ -125,6 +128,11 @@ static void AllocateEmptyJSArray(MacroAssembler* masm, |
__ mov(scratch3, zero_reg); |
__ sw(scratch3, FieldMemOperand(result, JSArray::kLengthOffset)); |
+ if (initial_capacity == 0) { |
+ __ sw(scratch1, FieldMemOperand(result, JSArray::kElementsOffset)); |
+ return; |
+ } |
+ |
// Calculate the location of the elements array and set elements array member |
// of the JSArray. |
// result: JSObject |
@@ -150,7 +158,6 @@ static void AllocateEmptyJSArray(MacroAssembler* masm, |
__ Addu(scratch1, scratch1, kPointerSize); |
// Fill the FixedArray with the hole value. Inline the code if short. |
- if (initial_capacity == 0) return; |
ASSERT_EQ(2 * kPointerSize, FixedArray::kHeaderSize); |
Kevin Millikin (Chromium)
2011/10/27 10:35:54
Also here.
|
__ LoadRoot(scratch3, Heap::kTheHoleValueRootIndex); |
static const int kLoopUnfoldLimit = 4; |