| Index: src/arm/macro-assembler-arm.cc
|
| diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc
|
| index cd124610f974b1c30b44335c0a27e9e3277a0932..b9728ed04fa14aab43229acbaba69d3181165c49 100644
|
| --- a/src/arm/macro-assembler-arm.cc
|
| +++ b/src/arm/macro-assembler-arm.cc
|
| @@ -489,7 +489,7 @@ void MacroAssembler::RecordWrite(Register object,
|
| if (emit_debug_code()) {
|
| ldr(ip, MemOperand(address));
|
| cmp(ip, value);
|
| - Check(eq, "Wrong address or value passed to RecordWrite");
|
| + Check(eq, kWrongAddressOrValuePassedToRecordWrite);
|
| }
|
|
|
| Label done;
|
| @@ -1490,7 +1490,7 @@ void MacroAssembler::CheckAccessGlobalProxy(Register holder_reg,
|
| // In debug mode, make sure the lexical context is set.
|
| #ifdef DEBUG
|
| cmp(scratch, Operand::Zero());
|
| - Check(ne, "we should not have an empty lexical context");
|
| + Check(ne, kWeShouldNotHaveAnEmptyLexicalContext);
|
| #endif
|
|
|
| // Load the native context of the current context.
|
| @@ -1508,7 +1508,7 @@ void MacroAssembler::CheckAccessGlobalProxy(Register holder_reg,
|
| ldr(holder_reg, FieldMemOperand(scratch, HeapObject::kMapOffset));
|
| LoadRoot(ip, Heap::kNativeContextMapRootIndex);
|
| cmp(holder_reg, ip);
|
| - Check(eq, "JSGlobalObject::native_context should be a native context.");
|
| + Check(eq, kJSGlobalObjectNativeContextShouldBeANativeContext);
|
| pop(holder_reg); // Restore holder.
|
| }
|
|
|
| @@ -1525,12 +1525,12 @@ void MacroAssembler::CheckAccessGlobalProxy(Register holder_reg,
|
| mov(holder_reg, ip); // Move ip to its holding place.
|
| LoadRoot(ip, Heap::kNullValueRootIndex);
|
| cmp(holder_reg, ip);
|
| - Check(ne, "JSGlobalProxy::context() should not be null.");
|
| + Check(ne, kJSGlobalProxyContextShouldNotBeNull);
|
|
|
| ldr(holder_reg, FieldMemOperand(holder_reg, HeapObject::kMapOffset));
|
| LoadRoot(ip, Heap::kNativeContextMapRootIndex);
|
| cmp(holder_reg, ip);
|
| - Check(eq, "JSGlobalObject::native_context should be a native context.");
|
| + Check(eq, kJSGlobalObjectNativeContextShouldBeANativeContext);
|
| // Restore ip is not needed. ip is reloaded below.
|
| pop(holder_reg); // Restore holder.
|
| // Restore ip to holder's context.
|
| @@ -1727,7 +1727,7 @@ void MacroAssembler::Allocate(int object_size,
|
| // respect to register content between debug and release mode.
|
| ldr(ip, MemOperand(topaddr));
|
| cmp(result, ip);
|
| - Check(eq, "Unexpected allocation top");
|
| + Check(eq, kUnexpectedAllocationTop);
|
| }
|
| // Load allocation limit into ip. Result already contains allocation top.
|
| ldr(ip, MemOperand(topaddr, limit - top));
|
| @@ -1825,7 +1825,7 @@ void MacroAssembler::Allocate(Register object_size,
|
| // respect to register content between debug and release mode.
|
| ldr(ip, MemOperand(topaddr));
|
| cmp(result, ip);
|
| - Check(eq, "Unexpected allocation top");
|
| + Check(eq, kUnexpectedAllocationTop);
|
| }
|
| // Load allocation limit into ip. Result already contains allocation top.
|
| ldr(ip, MemOperand(topaddr, limit - top));
|
| @@ -1859,7 +1859,7 @@ void MacroAssembler::Allocate(Register object_size,
|
| // Update allocation top. result temporarily holds the new top.
|
| if (emit_debug_code()) {
|
| tst(scratch2, Operand(kObjectAlignmentMask));
|
| - Check(eq, "Unaligned allocation in new space");
|
| + Check(eq, kUnalignedAllocationInNewSpace);
|
| }
|
| str(scratch2, MemOperand(topaddr));
|
|
|
| @@ -1882,7 +1882,7 @@ void MacroAssembler::UndoAllocationInNewSpace(Register object,
|
| mov(scratch, Operand(new_space_allocation_top));
|
| ldr(scratch, MemOperand(scratch));
|
| cmp(object, scratch);
|
| - Check(lt, "Undo allocation of non allocated memory");
|
| + Check(lt, kUndoAllocationOfNonAllocatedMemory);
|
| #endif
|
| // Write the address of the object to un-allocate as the current top.
|
| mov(scratch, Operand(new_space_allocation_top));
|
| @@ -2131,7 +2131,7 @@ void MacroAssembler::StoreNumberToDoubleElements(
|
| if (emit_debug_code()) {
|
| vmrs(ip);
|
| tst(ip, Operand(kVFPDefaultNaNModeControlBit));
|
| - Assert(ne, "Default NaN mode not set");
|
| + Assert(ne, kDefaultNaNModeNotSet);
|
| }
|
| VFPCanonicalizeNaN(double_scratch);
|
| b(&store);
|
| @@ -2381,7 +2381,7 @@ void MacroAssembler::CallApiFunctionAndReturn(ExternalReference function,
|
| if (emit_debug_code()) {
|
| ldr(r1, MemOperand(r7, kLevelOffset));
|
| cmp(r1, r6);
|
| - Check(eq, "Unexpected level after return from api call");
|
| + Check(eq, kUnexpectedLevelAfterReturnFromApiCall);
|
| }
|
| sub(r6, r6, Operand(1));
|
| str(r6, MemOperand(r7, kLevelOffset));
|
| @@ -2782,9 +2782,9 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value,
|
| }
|
|
|
|
|
| -void MacroAssembler::Assert(Condition cond, const char* msg) {
|
| +void MacroAssembler::Assert(Condition cond, BailoutReason reason) {
|
| if (emit_debug_code())
|
| - Check(cond, msg);
|
| + Check(cond, reason);
|
| }
|
|
|
|
|
| @@ -2803,23 +2803,23 @@ void MacroAssembler::AssertFastElements(Register elements) {
|
| LoadRoot(ip, Heap::kFixedCOWArrayMapRootIndex);
|
| cmp(elements, ip);
|
| b(eq, &ok);
|
| - Abort("JSObject with fast elements map has slow elements");
|
| + Abort(kJSObjectWithFastElementsMapHasSlowElements);
|
| bind(&ok);
|
| pop(elements);
|
| }
|
| }
|
|
|
|
|
| -void MacroAssembler::Check(Condition cond, const char* msg) {
|
| +void MacroAssembler::Check(Condition cond, BailoutReason reason) {
|
| Label L;
|
| b(cond, &L);
|
| - Abort(msg);
|
| + Abort(reason);
|
| // will not return here
|
| bind(&L);
|
| }
|
|
|
|
|
| -void MacroAssembler::Abort(const char* msg) {
|
| +void MacroAssembler::Abort(BailoutReason reason) {
|
| Label abort_start;
|
| bind(&abort_start);
|
| // We want to pass the msg string like a smi to avoid GC
|
| @@ -2827,6 +2827,7 @@ void MacroAssembler::Abort(const char* msg) {
|
| // properly. Instead, we pass an aligned pointer that is
|
| // a proper v8 smi, but also pass the alignment difference
|
| // from the real pointer as a smi.
|
| + const char* msg = GetBailoutReason(reason);
|
| intptr_t p1 = reinterpret_cast<intptr_t>(msg);
|
| intptr_t p0 = (p1 & ~kSmiTagMask) + kSmiTag;
|
| ASSERT(reinterpret_cast<Object*>(p0)->IsSmi());
|
| @@ -2969,7 +2970,7 @@ void MacroAssembler::LoadGlobalFunctionInitialMap(Register function,
|
| CheckMap(map, scratch, Heap::kMetaMapRootIndex, &fail, DO_SMI_CHECK);
|
| b(&ok);
|
| bind(&fail);
|
| - Abort("Global functions must have initial map");
|
| + Abort(kGlobalFunctionsMustHaveInitialMap);
|
| bind(&ok);
|
| }
|
| }
|
| @@ -3038,7 +3039,7 @@ void MacroAssembler::AssertNotSmi(Register object) {
|
| if (emit_debug_code()) {
|
| STATIC_ASSERT(kSmiTag == 0);
|
| tst(object, Operand(kSmiTagMask));
|
| - Check(ne, "Operand is a smi");
|
| + Check(ne, kOperandIsASmi);
|
| }
|
| }
|
|
|
| @@ -3047,7 +3048,7 @@ void MacroAssembler::AssertSmi(Register object) {
|
| if (emit_debug_code()) {
|
| STATIC_ASSERT(kSmiTag == 0);
|
| tst(object, Operand(kSmiTagMask));
|
| - Check(eq, "Operand is not smi");
|
| + Check(eq, kOperandIsNotSmi);
|
| }
|
| }
|
|
|
| @@ -3056,12 +3057,12 @@ void MacroAssembler::AssertString(Register object) {
|
| if (emit_debug_code()) {
|
| STATIC_ASSERT(kSmiTag == 0);
|
| tst(object, Operand(kSmiTagMask));
|
| - Check(ne, "Operand is a smi and not a string");
|
| + Check(ne, kOperandIsASmiAndNotAString);
|
| push(object);
|
| ldr(object, FieldMemOperand(object, HeapObject::kMapOffset));
|
| CompareInstanceType(object, object, FIRST_NONSTRING_TYPE);
|
| pop(object);
|
| - Check(lo, "Operand is not a string");
|
| + Check(lo, kOperandIsNotAString);
|
| }
|
| }
|
|
|
| @@ -3070,12 +3071,12 @@ void MacroAssembler::AssertName(Register object) {
|
| if (emit_debug_code()) {
|
| STATIC_ASSERT(kSmiTag == 0);
|
| tst(object, Operand(kSmiTagMask));
|
| - Check(ne, "Operand is a smi and not a name");
|
| + Check(ne, kOperandIsASmiAndNotAName);
|
| push(object);
|
| ldr(object, FieldMemOperand(object, HeapObject::kMapOffset));
|
| CompareInstanceType(object, object, LAST_NAME_TYPE);
|
| pop(object);
|
| - Check(le, "Operand is not a name");
|
| + Check(le, kOperandIsNotAName);
|
| }
|
| }
|
|
|
| @@ -3084,7 +3085,7 @@ void MacroAssembler::AssertName(Register object) {
|
| void MacroAssembler::AssertIsRoot(Register reg, Heap::RootListIndex index) {
|
| if (emit_debug_code()) {
|
| CompareRoot(reg, index);
|
| - Check(eq, "HeapNumberMap register clobbered.");
|
| + Check(eq, kHeapNumberMapRegisterClobbered);
|
| }
|
| }
|
|
|
| @@ -3230,7 +3231,7 @@ void MacroAssembler::CopyBytes(Register src,
|
| bind(&word_loop);
|
| if (emit_debug_code()) {
|
| tst(src, Operand(kPointerSize - 1));
|
| - Assert(eq, "Expecting alignment for CopyBytes");
|
| + Assert(eq, kExpectingAlignmentForCopyBytes);
|
| }
|
| cmp(length, Operand(kPointerSize));
|
| b(lt, &byte_loop);
|
| @@ -3494,7 +3495,7 @@ void MacroAssembler::GetRelocatedValueLocation(Register ldr_location,
|
| // Check that the instruction is a ldr reg, [pc + offset] .
|
| and_(result, result, Operand(kLdrPCPattern));
|
| cmp(result, Operand(kLdrPCPattern));
|
| - Check(eq, "The instruction to patch should be a load from pc.");
|
| + Check(eq, kTheInstructionToPatchShouldBeALoadFromPc);
|
| // Result was clobbered. Restore it.
|
| ldr(result, MemOperand(ldr_location));
|
| }
|
|
|