| Index: src/arm/macro-assembler-arm.cc
|
| ===================================================================
|
| --- src/arm/macro-assembler-arm.cc (revision 3415)
|
| +++ src/arm/macro-assembler-arm.cc (working copy)
|
| @@ -794,15 +794,13 @@
|
| mov(scratch1, Operand(new_space_allocation_top));
|
| if ((flags & RESULT_CONTAINS_TOP) == 0) {
|
| ldr(result, MemOperand(scratch1));
|
| - } else {
|
| -#ifdef DEBUG
|
| + } else if (FLAG_debug_code) {
|
| // Assert that result actually contains top on entry. scratch2 is used
|
| // immediately below so this use of scratch2 does not cause difference with
|
| // respect to register content between debug and release mode.
|
| ldr(scratch2, MemOperand(scratch1));
|
| cmp(result, scratch2);
|
| Check(eq, "Unexpected allocation top");
|
| -#endif
|
| }
|
|
|
| // Calculate new top and bail out if new space is exhausted. Use result
|
| @@ -815,7 +813,11 @@
|
| cmp(result, Operand(scratch2));
|
| b(hi, gc_required);
|
|
|
| - // Update allocation top. result temporarily holds the new top,
|
| + // Update allocation top. result temporarily holds the new top.
|
| + if (FLAG_debug_code) {
|
| + tst(result, Operand(kObjectAlignmentMask));
|
| + Check(eq, "Unaligned allocation in new space");
|
| + }
|
| str(result, MemOperand(scratch1));
|
|
|
| // Tag and adjust back to start of new object.
|
| @@ -844,15 +846,13 @@
|
| mov(scratch1, Operand(new_space_allocation_top));
|
| if ((flags & RESULT_CONTAINS_TOP) == 0) {
|
| ldr(result, MemOperand(scratch1));
|
| - } else {
|
| -#ifdef DEBUG
|
| + } else if (FLAG_debug_code) {
|
| // Assert that result actually contains top on entry. scratch2 is used
|
| // immediately below so this use of scratch2 does not cause difference with
|
| // respect to register content between debug and release mode.
|
| ldr(scratch2, MemOperand(scratch1));
|
| cmp(result, scratch2);
|
| Check(eq, "Unexpected allocation top");
|
| -#endif
|
| }
|
|
|
| // Calculate new top and bail out if new space is exhausted. Use result
|
| @@ -866,7 +866,11 @@
|
| cmp(result, Operand(scratch2));
|
| b(hi, gc_required);
|
|
|
| - // Update allocation top. result temporarily holds the new top,
|
| + // Update allocation top. result temporarily holds the new top.
|
| + if (FLAG_debug_code) {
|
| + tst(result, Operand(kObjectAlignmentMask));
|
| + Check(eq, "Unaligned allocation in new space");
|
| + }
|
| str(result, MemOperand(scratch1));
|
|
|
| // Adjust back to start of new object.
|
| @@ -1162,6 +1166,9 @@
|
| RecordComment(msg);
|
| }
|
| #endif
|
| + // Disable stub call restrictions to always allow calls to abort.
|
| + set_allow_stub_calls(true);
|
| +
|
| mov(r0, Operand(p0));
|
| push(r0);
|
| mov(r0, Operand(Smi::FromInt(p1 - p0)));
|
|
|