| Index: src/ia32/macro-assembler-ia32.cc
|
| diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc
|
| index 2ab5a259321cd2cd8095fcd43c14a1886d40e62d..8b1be3cf17262f7c7c5d9de2d8a755af7982b937 100644
|
| --- a/src/ia32/macro-assembler-ia32.cc
|
| +++ b/src/ia32/macro-assembler-ia32.cc
|
| @@ -678,7 +678,7 @@ void MacroAssembler::AssertNumber(Register object) {
|
| JumpIfSmi(object, &ok);
|
| cmp(FieldOperand(object, HeapObject::kMapOffset),
|
| isolate()->factory()->heap_number_map());
|
| - Check(equal, "Operand not a number");
|
| + Check(equal, kOperandNotANumber);
|
| bind(&ok);
|
| }
|
| }
|
| @@ -687,7 +687,7 @@ void MacroAssembler::AssertNumber(Register object) {
|
| void MacroAssembler::AssertSmi(Register object) {
|
| if (emit_debug_code()) {
|
| test(object, Immediate(kSmiTagMask));
|
| - Check(equal, "Operand is not a smi");
|
| + Check(equal, kOperandIsNotASmi);
|
| }
|
| }
|
|
|
| @@ -695,12 +695,12 @@ void MacroAssembler::AssertSmi(Register object) {
|
| void MacroAssembler::AssertString(Register object) {
|
| if (emit_debug_code()) {
|
| test(object, Immediate(kSmiTagMask));
|
| - Check(not_equal, "Operand is a smi and not a string");
|
| + Check(not_equal, kOperandIsASmiAndNotAString);
|
| push(object);
|
| mov(object, FieldOperand(object, HeapObject::kMapOffset));
|
| CmpInstanceType(object, FIRST_NONSTRING_TYPE);
|
| pop(object);
|
| - Check(below, "Operand is not a string");
|
| + Check(below, kOperandIsNotAString);
|
| }
|
| }
|
|
|
| @@ -708,12 +708,12 @@ void MacroAssembler::AssertString(Register object) {
|
| void MacroAssembler::AssertName(Register object) {
|
| if (emit_debug_code()) {
|
| test(object, Immediate(kSmiTagMask));
|
| - Check(not_equal, "Operand is a smi and not a name");
|
| + Check(not_equal, kOperandIsASmiAndNotAName);
|
| push(object);
|
| mov(object, FieldOperand(object, HeapObject::kMapOffset));
|
| CmpInstanceType(object, LAST_NAME_TYPE);
|
| pop(object);
|
| - Check(below_equal, "Operand is not a name");
|
| + Check(below_equal, kOperandIsNotAName);
|
| }
|
| }
|
|
|
| @@ -721,7 +721,7 @@ void MacroAssembler::AssertName(Register object) {
|
| void MacroAssembler::AssertNotSmi(Register object) {
|
| if (emit_debug_code()) {
|
| test(object, Immediate(kSmiTagMask));
|
| - Check(not_equal, "Operand is a smi");
|
| + Check(not_equal, kOperandIsASmi);
|
| }
|
| }
|
|
|
| @@ -734,7 +734,7 @@ void MacroAssembler::EnterFrame(StackFrame::Type type) {
|
| push(Immediate(CodeObject()));
|
| if (emit_debug_code()) {
|
| cmp(Operand(esp, 0), Immediate(isolate()->factory()->undefined_value()));
|
| - Check(not_equal, "code object not properly patched");
|
| + Check(not_equal, kCodeObjectNotProperlyPatched);
|
| }
|
| }
|
|
|
| @@ -743,7 +743,7 @@ void MacroAssembler::LeaveFrame(StackFrame::Type type) {
|
| if (emit_debug_code()) {
|
| cmp(Operand(ebp, StandardFrameConstants::kMarkerOffset),
|
| Immediate(Smi::FromInt(type)));
|
| - Check(equal, "stack frame types must match");
|
| + Check(equal, kStackFrameTypesMustMatch);
|
| }
|
| leave();
|
| }
|
| @@ -1024,7 +1024,7 @@ void MacroAssembler::CheckAccessGlobalProxy(Register holder_reg,
|
| // When generating debug code, make sure the lexical context is set.
|
| if (emit_debug_code()) {
|
| cmp(scratch1, Immediate(0));
|
| - Check(not_equal, "we should not have an empty lexical context");
|
| + Check(not_equal, kWeShouldNotHaveAnEmptyLexicalContext);
|
| }
|
| // Load the native context of the current context.
|
| int offset =
|
| @@ -1037,7 +1037,7 @@ void MacroAssembler::CheckAccessGlobalProxy(Register holder_reg,
|
| // Read the first word and compare to native_context_map.
|
| cmp(FieldOperand(scratch1, HeapObject::kMapOffset),
|
| isolate()->factory()->native_context_map());
|
| - Check(equal, "JSGlobalObject::native_context should be a native context.");
|
| + Check(equal, kJSGlobalObjectNativeContextShouldBeANativeContext);
|
| }
|
|
|
| // Check if both contexts are the same.
|
| @@ -1056,12 +1056,12 @@ void MacroAssembler::CheckAccessGlobalProxy(Register holder_reg,
|
| // Check the context is a native context.
|
| if (emit_debug_code()) {
|
| cmp(scratch2, isolate()->factory()->null_value());
|
| - Check(not_equal, "JSGlobalProxy::context() should not be null.");
|
| + Check(not_equal, kJSGlobalProxyContextShouldNotBeNull);
|
|
|
| // Read the first word and compare to native_context_map(),
|
| cmp(FieldOperand(scratch2, HeapObject::kMapOffset),
|
| isolate()->factory()->native_context_map());
|
| - Check(equal, "JSGlobalObject::native_context should be a native context.");
|
| + Check(equal, kJSGlobalObjectNativeContextShouldBeANativeContext);
|
| }
|
|
|
| int token_offset = Context::kHeaderSize +
|
| @@ -1206,7 +1206,7 @@ void MacroAssembler::LoadAllocationTopHelper(Register result,
|
| #ifdef DEBUG
|
| // Assert that result actually contains top on entry.
|
| cmp(result, Operand::StaticVariable(allocation_top));
|
| - Check(equal, "Unexpected allocation top");
|
| + Check(equal, kUnexpectedAllocationTop);
|
| #endif
|
| return;
|
| }
|
| @@ -1226,7 +1226,7 @@ void MacroAssembler::UpdateAllocationTopHelper(Register result_end,
|
| AllocationFlags flags) {
|
| if (emit_debug_code()) {
|
| test(result_end, Immediate(kObjectAlignmentMask));
|
| - Check(zero, "Unaligned allocation in new space");
|
| + Check(zero, kUnalignedAllocationInNewSpace);
|
| }
|
|
|
| ExternalReference allocation_top =
|
| @@ -1458,7 +1458,7 @@ void MacroAssembler::UndoAllocationInNewSpace(Register object) {
|
| and_(object, Immediate(~kHeapObjectTagMask));
|
| #ifdef DEBUG
|
| cmp(object, Operand::StaticVariable(new_space_allocation_top));
|
| - Check(below, "Undo allocation of non allocated memory");
|
| + Check(below, kUndoAllocationOfNonAllocatedMemory);
|
| #endif
|
| mov(Operand::StaticVariable(new_space_allocation_top), object);
|
| }
|
| @@ -2062,7 +2062,7 @@ void MacroAssembler::CallApiFunctionAndReturn(Address function_address,
|
| // previous handle scope.
|
| mov(Operand::StaticVariable(next_address), ebx);
|
| sub(Operand::StaticVariable(level_address), Immediate(1));
|
| - Assert(above_equal, "Invalid HandleScope level");
|
| + Assert(above_equal, kInvalidHandleScopeLevel);
|
| cmp(edi, Operand::StaticVariable(limit_address));
|
| j(not_equal, &delete_allocated_handles);
|
| bind(&leave_exit_frame);
|
| @@ -2104,7 +2104,7 @@ void MacroAssembler::CallApiFunctionAndReturn(Address function_address,
|
| cmp(return_value, isolate()->factory()->null_value());
|
| j(equal, &ok, Label::kNear);
|
|
|
| - Abort("API call returned invalid object");
|
| + Abort(kAPICallReturnedInvalidObject);
|
|
|
| bind(&ok);
|
| #endif
|
| @@ -2390,7 +2390,7 @@ void MacroAssembler::LoadContext(Register dst, int context_chain_length) {
|
| if (emit_debug_code()) {
|
| cmp(FieldOperand(dst, HeapObject::kMapOffset),
|
| isolate()->factory()->with_context_map());
|
| - Check(not_equal, "Variable resolved to with context.");
|
| + Check(not_equal, kVariableResolvedToWithContext);
|
| }
|
| }
|
|
|
| @@ -2477,7 +2477,7 @@ void MacroAssembler::LoadGlobalFunctionInitialMap(Register function,
|
| CheckMap(map, isolate()->factory()->meta_map(), &fail, DO_SMI_CHECK);
|
| jmp(&ok);
|
| bind(&fail);
|
| - Abort("Global functions must have initial map");
|
| + Abort(kGlobalFunctionsMustHaveInitialMap);
|
| bind(&ok);
|
| }
|
| }
|
| @@ -2578,7 +2578,7 @@ void MacroAssembler::VerifyX87StackDepth(uint32_t depth) {
|
| and_(eax, kTopMask);
|
| shr(eax, 11);
|
| cmp(eax, Immediate(tos));
|
| - Check(equal, "Unexpected FPU stack depth after instruction");
|
| + Check(equal, kUnexpectedFPUStackDepthAfterInstruction);
|
| fnclex();
|
| pop(eax);
|
| }
|
| @@ -2661,8 +2661,8 @@ void MacroAssembler::DecrementCounter(Condition cc,
|
| }
|
|
|
|
|
| -void MacroAssembler::Assert(Condition cc, const char* msg) {
|
| - if (emit_debug_code()) Check(cc, msg);
|
| +void MacroAssembler::Assert(Condition cc, BailoutReason reason) {
|
| + if (emit_debug_code()) Check(cc, reason);
|
| }
|
|
|
|
|
| @@ -2679,16 +2679,16 @@ void MacroAssembler::AssertFastElements(Register elements) {
|
| cmp(FieldOperand(elements, HeapObject::kMapOffset),
|
| Immediate(factory->fixed_cow_array_map()));
|
| j(equal, &ok);
|
| - Abort("JSObject with fast elements map has slow elements");
|
| + Abort(kJSObjectWithFastElementsMapHasSlowElements);
|
| bind(&ok);
|
| }
|
| }
|
|
|
|
|
| -void MacroAssembler::Check(Condition cc, const char* msg) {
|
| +void MacroAssembler::Check(Condition cc, BailoutReason reason) {
|
| Label L;
|
| j(cc, &L);
|
| - Abort(msg);
|
| + Abort(reason);
|
| // will not return here
|
| bind(&L);
|
| }
|
| @@ -2709,12 +2709,13 @@ void MacroAssembler::CheckStackAlignment() {
|
| }
|
|
|
|
|
| -void MacroAssembler::Abort(const char* msg) {
|
| +void MacroAssembler::Abort(BailoutReason reason) {
|
| // We want to pass the msg string like a smi to avoid GC
|
| // problems, however msg is not guaranteed to be aligned
|
| // 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());
|
| @@ -3118,7 +3119,7 @@ void MacroAssembler::EnsureNotWhite(
|
| if (emit_debug_code()) {
|
| mov(length, Operand(bitmap_scratch, MemoryChunk::kLiveBytesOffset));
|
| cmp(length, Operand(bitmap_scratch, MemoryChunk::kSizeOffset));
|
| - Check(less_equal, "Live Bytes Count overflow chunk size");
|
| + Check(less_equal, kLiveBytesCountOverflowChunkSize);
|
| }
|
|
|
| bind(&done);
|
|
|