| Index: src/ia32/code-stubs-ia32.cc
|
| diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc
|
| index e39d11445109d93c90915a0d250b972eeb11a89d..0b671d2942f42824d6d9e9b3ffb3b8b3c9abf731 100644
|
| --- a/src/ia32/code-stubs-ia32.cc
|
| +++ b/src/ia32/code-stubs-ia32.cc
|
| @@ -493,10 +493,10 @@ static void IntegerConvert(MacroAssembler* masm,
|
| __ cmp(Operand(scratch2), Immediate(non_smi_exponent));
|
| // If we have a match of the int32-but-not-Smi exponent then skip some
|
| // logic.
|
| - __ j(equal, &right_exponent);
|
| + __ j(equal, &right_exponent, Label::kNear);
|
| // If the exponent is higher than that then go to slow case. This catches
|
| // numbers that don't fit in a signed int32, infinities and NaNs.
|
| - __ j(less, &normal_exponent);
|
| + __ j(less, &normal_exponent, Label::kNear);
|
|
|
| {
|
| // Handle a big exponent. The only reason we have this code is that the
|
| @@ -525,9 +525,9 @@ static void IntegerConvert(MacroAssembler* masm,
|
| __ or_(ecx, Operand(scratch2));
|
| // We have the answer in ecx, but we may need to negate it.
|
| __ test(scratch, Operand(scratch));
|
| - __ j(positive, &done);
|
| + __ j(positive, &done, Label::kNear);
|
| __ neg(ecx);
|
| - __ jmp(&done);
|
| + __ jmp(&done, Label::kNear);
|
| }
|
|
|
| __ bind(&normal_exponent);
|
| @@ -540,7 +540,7 @@ static void IntegerConvert(MacroAssembler* masm,
|
| (HeapNumber::kExponentBias + 0) << HeapNumber::kExponentShift;
|
| __ sub(Operand(scratch2), Immediate(zero_exponent));
|
| // ecx already has a Smi zero.
|
| - __ j(less, &done);
|
| + __ j(less, &done, Label::kNear);
|
|
|
| // We have a shifted exponent between 0 and 30 in scratch2.
|
| __ shr(scratch2, HeapNumber::kExponentShift);
|
| @@ -765,7 +765,7 @@ void UnaryOpStub::GenerateHeapNumberCodeSub(MacroAssembler* masm,
|
|
|
| Label slow_allocate_heapnumber, heapnumber_allocated;
|
| __ AllocateHeapNumber(eax, ebx, ecx, &slow_allocate_heapnumber);
|
| - __ jmp(&heapnumber_allocated);
|
| + __ jmp(&heapnumber_allocated, Label::kNear);
|
|
|
| __ bind(&slow_allocate_heapnumber);
|
| __ EnterInternalFrame();
|
| @@ -1442,14 +1442,14 @@ void BinaryOpStub::GenerateBothStringStub(MacroAssembler* masm) {
|
| Register right = eax;
|
|
|
| // Test if left operand is a string.
|
| - __ JumpIfSmi(left, &call_runtime);
|
| + __ JumpIfSmi(left, &call_runtime, Label::kNear);
|
| __ CmpObjectType(left, FIRST_NONSTRING_TYPE, ecx);
|
| - __ j(above_equal, &call_runtime);
|
| + __ j(above_equal, &call_runtime, Label::kNear);
|
|
|
| // Test if right operand is a string.
|
| - __ JumpIfSmi(right, &call_runtime);
|
| + __ JumpIfSmi(right, &call_runtime, Label::kNear);
|
| __ CmpObjectType(right, FIRST_NONSTRING_TYPE, ecx);
|
| - __ j(above_equal, &call_runtime);
|
| + __ j(above_equal, &call_runtime, Label::kNear);
|
|
|
| StringAddStub string_add_stub(NO_STRING_CHECK_IN_STUB);
|
| GenerateRegisterArgsPush(masm);
|
| @@ -1563,7 +1563,7 @@ void BinaryOpStub::GenerateInt32Stub(MacroAssembler* masm) {
|
| } else {
|
| // Check if result fits in a smi.
|
| __ cmp(eax, 0xc0000000);
|
| - __ j(negative, &non_smi_result);
|
| + __ j(negative, &non_smi_result, Label::kNear);
|
| }
|
| // Tag smi result and return.
|
| __ SmiTag(eax);
|
| @@ -1777,7 +1777,7 @@ void BinaryOpStub::GenerateHeapNumberStub(MacroAssembler* masm) {
|
| } else {
|
| // Check if result fits in a smi.
|
| __ cmp(eax, 0xc0000000);
|
| - __ j(negative, &non_smi_result);
|
| + __ j(negative, &non_smi_result, Label::kNear);
|
| }
|
| // Tag smi result and return.
|
| __ SmiTag(eax);
|
| @@ -1976,7 +1976,7 @@ void BinaryOpStub::GenerateGeneric(MacroAssembler* masm) {
|
| } else {
|
| // Check if result fits in a smi.
|
| __ cmp(eax, 0xc0000000);
|
| - __ j(negative, &non_smi_result);
|
| + __ j(negative, &non_smi_result, Label::kNear);
|
| }
|
| // Tag smi result and return.
|
| __ SmiTag(eax);
|
| @@ -2451,10 +2451,10 @@ void FloatingPointHelper::LoadUnknownsAsIntegers(MacroAssembler* masm,
|
| Label load_arg2, done;
|
|
|
| // Test if arg1 is a Smi.
|
| - __ JumpIfNotSmi(edx, &arg1_is_object);
|
| + __ JumpIfNotSmi(edx, &arg1_is_object, Label::kNear);
|
|
|
| __ SmiUntag(edx);
|
| - __ jmp(&load_arg2);
|
| + __ jmp(&load_arg2, Label::kNear);
|
|
|
| // If the argument is undefined it converts to zero (ECMA-262, section 9.5).
|
| __ bind(&check_undefined_arg1);
|
| @@ -2462,7 +2462,7 @@ void FloatingPointHelper::LoadUnknownsAsIntegers(MacroAssembler* masm,
|
| __ cmp(edx, factory->undefined_value());
|
| __ j(not_equal, conversion_failure);
|
| __ mov(edx, Immediate(0));
|
| - __ jmp(&load_arg2);
|
| + __ jmp(&load_arg2, Label::kNear);
|
|
|
| __ bind(&arg1_is_object);
|
| __ mov(ebx, FieldOperand(edx, HeapObject::kMapOffset));
|
| @@ -2477,18 +2477,18 @@ void FloatingPointHelper::LoadUnknownsAsIntegers(MacroAssembler* masm,
|
| __ bind(&load_arg2);
|
|
|
| // Test if arg2 is a Smi.
|
| - __ JumpIfNotSmi(eax, &arg2_is_object);
|
| + __ JumpIfNotSmi(eax, &arg2_is_object, Label::kNear);
|
|
|
| __ SmiUntag(eax);
|
| __ mov(ecx, eax);
|
| - __ jmp(&done);
|
| + __ jmp(&done, Label::kNear);
|
|
|
| // If the argument is undefined it converts to zero (ECMA-262, section 9.5).
|
| __ bind(&check_undefined_arg2);
|
| __ cmp(eax, factory->undefined_value());
|
| __ j(not_equal, conversion_failure);
|
| __ mov(ecx, Immediate(0));
|
| - __ jmp(&done);
|
| + __ jmp(&done, Label::kNear);
|
|
|
| __ bind(&arg2_is_object);
|
| __ mov(ebx, FieldOperand(eax, HeapObject::kMapOffset));
|
| @@ -2867,7 +2867,7 @@ void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) {
|
|
|
| // Check that the key is a smi.
|
| Label slow;
|
| - __ JumpIfNotSmi(edx, &slow);
|
| + __ JumpIfNotSmi(edx, &slow, Label::kNear);
|
|
|
| // Check if the calling frame is an arguments adaptor frame.
|
| Label adaptor;
|
| @@ -2880,7 +2880,7 @@ void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) {
|
| // through register eax. Use unsigned comparison to get negative
|
| // check for free.
|
| __ cmp(edx, Operand(eax));
|
| - __ j(above_equal, &slow);
|
| + __ j(above_equal, &slow, Label::kNear);
|
|
|
| // Read the argument from the stack and return it.
|
| STATIC_ASSERT(kSmiTagSize == 1);
|
| @@ -2896,7 +2896,7 @@ void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) {
|
| __ bind(&adaptor);
|
| __ mov(ecx, Operand(ebx, ArgumentsAdaptorFrameConstants::kLengthOffset));
|
| __ cmp(edx, Operand(ecx));
|
| - __ j(above_equal, &slow);
|
| + __ j(above_equal, &slow, Label::kNear);
|
|
|
| // Read the argument from the stack and return it.
|
| STATIC_ASSERT(kSmiTagSize == 1);
|
| @@ -3175,11 +3175,11 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
|
| __ mov(edx, Operand(ebp, StandardFrameConstants::kCallerFPOffset));
|
| __ mov(ecx, Operand(edx, StandardFrameConstants::kContextOffset));
|
| __ cmp(Operand(ecx), Immediate(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)));
|
| - __ j(equal, &adaptor_frame);
|
| + __ j(equal, &adaptor_frame, Label::kNear);
|
|
|
| // Get the length from the frame.
|
| __ mov(ecx, Operand(esp, 1 * kPointerSize));
|
| - __ jmp(&try_allocate);
|
| + __ jmp(&try_allocate, Label::kNear);
|
|
|
| // Patch the arguments.length and the parameters pointer.
|
| __ bind(&adaptor_frame);
|
| @@ -3225,7 +3225,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
|
| // If there are no actual arguments, we're done.
|
| Label done;
|
| __ test(ecx, Operand(ecx));
|
| - __ j(zero, &done);
|
| + __ j(zero, &done, Label::kNear);
|
|
|
| // Get the parameters pointer from the stack.
|
| __ mov(edx, Operand(esp, 2 * kPointerSize));
|
| @@ -3822,16 +3822,16 @@ static int NegativeComparisonResult(Condition cc) {
|
| void CompareStub::Generate(MacroAssembler* masm) {
|
| ASSERT(lhs_.is(no_reg) && rhs_.is(no_reg));
|
|
|
| - Label check_unequal_objects, done;
|
| + Label check_unequal_objects;
|
|
|
| // Compare two smis if required.
|
| if (include_smi_compare_) {
|
| Label non_smi, smi_done;
|
| __ mov(ecx, Operand(edx));
|
| __ or_(ecx, Operand(eax));
|
| - __ JumpIfNotSmi(ecx, &non_smi);
|
| + __ JumpIfNotSmi(ecx, &non_smi, Label::kNear);
|
| __ sub(edx, Operand(eax)); // Return on the result of the subtraction.
|
| - __ j(no_overflow, &smi_done);
|
| + __ j(no_overflow, &smi_done, Label::kNear);
|
| __ not_(edx); // Correct sign in case of overflow. edx is never 0 here.
|
| __ bind(&smi_done);
|
| __ mov(eax, edx);
|
| @@ -3953,7 +3953,7 @@ void CompareStub::Generate(MacroAssembler* masm) {
|
| __ cmp(FieldOperand(ebx, HeapObject::kMapOffset),
|
| Immediate(masm->isolate()->factory()->heap_number_map()));
|
| // If heap number, handle it in the slow case.
|
| - __ j(equal, &slow);
|
| + __ j(equal, &slow, Label::kNear);
|
| // Return non-equal (ebx is not zero)
|
| __ mov(eax, ebx);
|
| __ ret(0);
|
| @@ -4004,7 +4004,7 @@ void CompareStub::Generate(MacroAssembler* masm) {
|
| __ ucomisd(xmm0, xmm1);
|
|
|
| // Don't base result on EFLAGS when a NaN is involved.
|
| - __ j(parity_even, &unordered);
|
| + __ j(parity_even, &unordered, Label::kNear);
|
| // Return a result of -1, 0, or 1, based on EFLAGS.
|
| __ mov(eax, 0); // equal
|
| __ mov(ecx, Immediate(Smi::FromInt(1)));
|
| @@ -4020,12 +4020,12 @@ void CompareStub::Generate(MacroAssembler* masm) {
|
| __ FCmp();
|
|
|
| // Don't base result on EFLAGS when a NaN is involved.
|
| - __ j(parity_even, &unordered);
|
| + __ j(parity_even, &unordered, Label::kNear);
|
|
|
| Label below_label, above_label;
|
| // Return a result of -1, 0, or 1, based on EFLAGS.
|
| - __ j(below, &below_label);
|
| - __ j(above, &above_label);
|
| + __ j(below, &below_label, Label::kNear);
|
| + __ j(above, &above_label, Label::kNear);
|
|
|
| __ Set(eax, Immediate(0));
|
| __ ret(0);
|
| @@ -4340,7 +4340,7 @@ void CEntryStub::GenerateCore(MacroAssembler* masm,
|
| // If the returned exception is RETRY_AFTER_GC continue at retry label
|
| STATIC_ASSERT(Failure::RETRY_AFTER_GC == 0);
|
| __ test(eax, Immediate(((1 << kFailureTypeTagSize) - 1) << kFailureTagSize));
|
| - __ j(zero, &retry);
|
| + __ j(zero, &retry, Label::kNear);
|
|
|
| // Special handling of out of memory exceptions.
|
| __ cmp(eax, reinterpret_cast<int32_t>(Failure::OutOfMemoryException()));
|
| @@ -4460,11 +4460,11 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
|
| ExternalReference js_entry_sp(Isolate::k_js_entry_sp_address,
|
| masm->isolate());
|
| __ cmp(Operand::StaticVariable(js_entry_sp), Immediate(0));
|
| - __ j(not_equal, ¬_outermost_js);
|
| + __ j(not_equal, ¬_outermost_js, Label::kNear);
|
| __ mov(Operand::StaticVariable(js_entry_sp), ebp);
|
| __ push(Immediate(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME)));
|
| Label cont;
|
| - __ jmp(&cont);
|
| + __ jmp(&cont, Label::kNear);
|
| __ bind(¬_outermost_js);
|
| __ push(Immediate(Smi::FromInt(StackFrame::INNER_JSENTRY_FRAME)));
|
| __ bind(&cont);
|
| @@ -4705,26 +4705,26 @@ void InstanceofStub::Generate(MacroAssembler* masm) {
|
| __ bind(¬_js_object);
|
| // Before null, smi and string value checks, check that the rhs is a function
|
| // as for a non-function rhs an exception needs to be thrown.
|
| - __ JumpIfSmi(function, &slow);
|
| + __ JumpIfSmi(function, &slow, Label::kNear);
|
| __ CmpObjectType(function, JS_FUNCTION_TYPE, scratch);
|
| - __ j(not_equal, &slow);
|
| + __ j(not_equal, &slow, Label::kNear);
|
|
|
| // Null is not instance of anything.
|
| __ cmp(object, factory->null_value());
|
| - __ j(not_equal, &object_not_null);
|
| + __ j(not_equal, &object_not_null, Label::kNear);
|
| __ Set(eax, Immediate(Smi::FromInt(1)));
|
| __ ret((HasArgsInRegisters() ? 0 : 2) * kPointerSize);
|
|
|
| __ bind(&object_not_null);
|
| // Smi values is not instance of anything.
|
| - __ JumpIfNotSmi(object, &object_not_null_or_smi);
|
| + __ JumpIfNotSmi(object, &object_not_null_or_smi, Label::kNear);
|
| __ Set(eax, Immediate(Smi::FromInt(1)));
|
| __ ret((HasArgsInRegisters() ? 0 : 2) * kPointerSize);
|
|
|
| __ bind(&object_not_null_or_smi);
|
| // String values is not instance of anything.
|
| Condition is_string = masm->IsObjectStringType(object, scratch, scratch);
|
| - __ j(NegateCondition(is_string), &slow);
|
| + __ j(NegateCondition(is_string), &slow, Label::kNear);
|
| __ Set(eax, Immediate(Smi::FromInt(1)));
|
| __ ret((HasArgsInRegisters() ? 0 : 2) * kPointerSize);
|
|
|
|
|