| Index: src/mips/macro-assembler-mips.cc
|
| diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc
|
| index e53f10afaca7681805d23683151f29a43f255167..5becf7c370270f03bc00de8bb71473a8be809916 100644
|
| --- a/src/mips/macro-assembler-mips.cc
|
| +++ b/src/mips/macro-assembler-mips.cc
|
| @@ -2944,12 +2944,15 @@ void MacroAssembler::Allocate(int object_size,
|
|
|
| if ((flags & DOUBLE_ALIGNMENT) != 0) {
|
| // Align the next allocation. Storing the filler map without checking top is
|
| - // always safe because the limit of the heap is always aligned.
|
| + // safe in new-space because the limit of the heap is aligned there.
|
| ASSERT((flags & PRETENURE_OLD_POINTER_SPACE) == 0);
|
| ASSERT(kPointerAlignment * 2 == kDoubleAlignment);
|
| And(scratch2, result, Operand(kDoubleAlignmentMask));
|
| Label aligned;
|
| Branch(&aligned, eq, scratch2, Operand(zero_reg));
|
| + if ((flags & PRETENURE_OLD_DATA_SPACE) != 0) {
|
| + Branch(gc_required, Ugreater_equal, result, Operand(t9));
|
| + }
|
| li(scratch2, Operand(isolate()->factory()->one_pointer_filler_map()));
|
| sw(scratch2, MemOperand(result));
|
| Addu(result, result, Operand(kDoubleSize / 2));
|
| @@ -3028,12 +3031,15 @@ void MacroAssembler::Allocate(Register object_size,
|
|
|
| if ((flags & DOUBLE_ALIGNMENT) != 0) {
|
| // Align the next allocation. Storing the filler map without checking top is
|
| - // always safe because the limit of the heap is always aligned.
|
| + // safe in new-space because the limit of the heap is aligned there.
|
| ASSERT((flags & PRETENURE_OLD_POINTER_SPACE) == 0);
|
| ASSERT(kPointerAlignment * 2 == kDoubleAlignment);
|
| And(scratch2, result, Operand(kDoubleAlignmentMask));
|
| Label aligned;
|
| Branch(&aligned, eq, scratch2, Operand(zero_reg));
|
| + if ((flags & PRETENURE_OLD_DATA_SPACE) != 0) {
|
| + Branch(gc_required, Ugreater_equal, result, Operand(t9));
|
| + }
|
| li(scratch2, Operand(isolate()->factory()->one_pointer_filler_map()));
|
| sw(scratch2, MemOperand(result));
|
| Addu(result, result, Operand(kDoubleSize / 2));
|
|
|