| Index: src/ia32/code-stubs-ia32.cc
|
| ===================================================================
|
| --- src/ia32/code-stubs-ia32.cc (revision 7864)
|
| +++ src/ia32/code-stubs-ia32.cc (working copy)
|
| @@ -1018,7 +1018,7 @@
|
| // 3. Perform the smi check of the operands.
|
| STATIC_ASSERT(kSmiTag == 0); // Adjust zero check if not the case.
|
| __ test(combined, Immediate(kSmiTagMask));
|
| - __ j(not_zero, ¬_smis, not_taken);
|
| + __ j(not_zero, ¬_smis);
|
|
|
| // 4. Operands are both smis, perform the operation leaving the result in
|
| // eax and check the result if necessary.
|
| @@ -1047,7 +1047,7 @@
|
| __ shl_cl(left);
|
| // Check that the *signed* result fits in a smi.
|
| __ cmp(left, 0xc0000000);
|
| - __ j(sign, &use_fp_on_smis, not_taken);
|
| + __ j(sign, &use_fp_on_smis);
|
| // Tag the result and store it in register eax.
|
| __ SmiTag(left);
|
| __ mov(eax, left);
|
| @@ -1077,7 +1077,7 @@
|
| // Smi tagging these two cases can only happen with shifts
|
| // by 0 or 1 when handed a valid smi.
|
| __ test(left, Immediate(0xc0000000));
|
| - __ j(not_zero, slow, not_taken);
|
| + __ j(not_zero, slow);
|
| // Tag the result and store it in register eax.
|
| __ SmiTag(left);
|
| __ mov(eax, left);
|
| @@ -1086,12 +1086,12 @@
|
| case Token::ADD:
|
| ASSERT(right.is(eax));
|
| __ add(right, Operand(left)); // Addition is commutative.
|
| - __ j(overflow, &use_fp_on_smis, not_taken);
|
| + __ j(overflow, &use_fp_on_smis);
|
| break;
|
|
|
| case Token::SUB:
|
| __ sub(left, Operand(right));
|
| - __ j(overflow, &use_fp_on_smis, not_taken);
|
| + __ j(overflow, &use_fp_on_smis);
|
| __ mov(eax, left);
|
| break;
|
|
|
| @@ -1105,7 +1105,7 @@
|
| __ SmiUntag(right);
|
| // Do multiplication.
|
| __ imul(right, Operand(left)); // Multiplication is commutative.
|
| - __ j(overflow, &use_fp_on_smis, not_taken);
|
| + __ j(overflow, &use_fp_on_smis);
|
| // Check for negative zero result. Use combined = left | right.
|
| __ NegativeZeroTest(right, combined, &use_fp_on_smis);
|
| break;
|
| @@ -1116,7 +1116,7 @@
|
| __ mov(edi, left);
|
| // Check for 0 divisor.
|
| __ test(right, Operand(right));
|
| - __ j(zero, &use_fp_on_smis, not_taken);
|
| + __ j(zero, &use_fp_on_smis);
|
| // Sign extend left into edx:eax.
|
| ASSERT(left.is(eax));
|
| __ cdq();
|
| @@ -1140,7 +1140,7 @@
|
| case Token::MOD:
|
| // Check for 0 divisor.
|
| __ test(right, Operand(right));
|
| - __ j(zero, ¬_smis, not_taken);
|
| + __ j(zero, ¬_smis);
|
|
|
| // Sign extend left into edx:eax.
|
| ASSERT(left.is(eax));
|
| @@ -1541,7 +1541,7 @@
|
| __ mov(eax, Operand(esp, mode_ == OVERWRITE_RIGHT ?
|
| 1 * kPointerSize : 2 * kPointerSize));
|
| __ test(eax, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &skip_allocation, not_taken, Label::kNear);
|
| + __ j(not_zero, &skip_allocation, Label::kNear);
|
| // Fall through!
|
| case NO_OVERWRITE:
|
| __ AllocateHeapNumber(eax, ecx, edx, &call_runtime);
|
| @@ -1756,7 +1756,7 @@
|
| __ mov(eax, Operand(esp, mode_ == OVERWRITE_RIGHT ?
|
| 1 * kPointerSize : 2 * kPointerSize));
|
| __ test(eax, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &skip_allocation, not_taken, Label::kNear);
|
| + __ j(not_zero, &skip_allocation, Label::kNear);
|
| // Fall through!
|
| case NO_OVERWRITE:
|
| __ AllocateHeapNumber(eax, ecx, edx, &call_runtime);
|
| @@ -1956,7 +1956,7 @@
|
| __ mov(eax, Operand(esp, mode_ == OVERWRITE_RIGHT ?
|
| 1 * kPointerSize : 2 * kPointerSize));
|
| __ test(eax, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &skip_allocation, not_taken, Label::kNear);
|
| + __ j(not_zero, &skip_allocation, Label::kNear);
|
| // Fall through!
|
| case NO_OVERWRITE:
|
| __ AllocateHeapNumber(eax, ecx, edx, &call_runtime);
|
| @@ -2074,7 +2074,7 @@
|
| // If the argument in edx is already an object, we skip the
|
| // allocation of a heap number.
|
| __ test(edx, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &skip_allocation, not_taken);
|
| + __ j(not_zero, &skip_allocation);
|
| // Allocate a heap number for the result. Keep eax and edx intact
|
| // for the possible runtime call.
|
| __ AllocateHeapNumber(ebx, ecx, no_reg, alloc_failure);
|
| @@ -2090,7 +2090,7 @@
|
| // If the argument in eax is already an object, we skip the
|
| // allocation of a heap number.
|
| __ test(eax, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &skip_allocation, not_taken);
|
| + __ j(not_zero, &skip_allocation);
|
| // Fall through!
|
| case NO_OVERWRITE:
|
| // Allocate a heap number for the result. Keep eax and edx intact
|
| @@ -2333,11 +2333,11 @@
|
| int supported_exponent_limit =
|
| (63 + HeapNumber::kExponentBias) << HeapNumber::kExponentShift;
|
| __ cmp(Operand(edi), Immediate(supported_exponent_limit));
|
| - __ j(below, &in_range, taken, Label::kNear);
|
| + __ j(below, &in_range, Label::kNear);
|
| // Check for infinity and NaN. Both return NaN for sin.
|
| __ cmp(Operand(edi), Immediate(0x7ff00000));
|
| Label non_nan_result;
|
| - __ j(not_equal, &non_nan_result, taken, Label::kNear);
|
| + __ j(not_equal, &non_nan_result, Label::kNear);
|
| // Input is +/-Infinity or NaN. Result is NaN.
|
| __ fstp(0);
|
| // NaN is represented by 0x7ff8000000000000.
|
| @@ -2553,7 +2553,7 @@
|
| Label load_smi, done;
|
|
|
| __ test(number, Immediate(kSmiTagMask));
|
| - __ j(zero, &load_smi, not_taken, Label::kNear);
|
| + __ j(zero, &load_smi, Label::kNear);
|
| __ fld_d(FieldOperand(number, HeapNumber::kValueOffset));
|
| __ jmp(&done, Label::kNear);
|
|
|
| @@ -2572,14 +2572,14 @@
|
| // Load operand in edx into xmm0.
|
| __ test(edx, Immediate(kSmiTagMask));
|
| // Argument in edx is a smi.
|
| - __ j(zero, &load_smi_edx, not_taken, Label::kNear);
|
| + __ j(zero, &load_smi_edx, Label::kNear);
|
| __ movdbl(xmm0, FieldOperand(edx, HeapNumber::kValueOffset));
|
|
|
| __ bind(&load_eax);
|
| // Load operand in eax into xmm1.
|
| __ test(eax, Immediate(kSmiTagMask));
|
| // Argument in eax is a smi.
|
| - __ j(zero, &load_smi_eax, not_taken, Label::kNear);
|
| + __ j(zero, &load_smi_eax, Label::kNear);
|
| __ movdbl(xmm1, FieldOperand(eax, HeapNumber::kValueOffset));
|
| __ jmp(&done, Label::kNear);
|
|
|
| @@ -2604,7 +2604,7 @@
|
| // Load operand in edx into xmm0, or branch to not_numbers.
|
| __ test(edx, Immediate(kSmiTagMask));
|
| // Argument in edx is a smi.
|
| - __ j(zero, &load_smi_edx, not_taken, Label::kNear);
|
| + __ j(zero, &load_smi_edx, Label::kNear);
|
| Factory* factory = masm->isolate()->factory();
|
| __ cmp(FieldOperand(edx, HeapObject::kMapOffset), factory->heap_number_map());
|
| __ j(not_equal, not_numbers); // Argument in edx is not a number.
|
| @@ -2613,7 +2613,7 @@
|
| // Load operand in eax into xmm1, or branch to not_numbers.
|
| __ test(eax, Immediate(kSmiTagMask));
|
| // Argument in eax is a smi.
|
| - __ j(zero, &load_smi_eax, not_taken, Label::kNear);
|
| + __ j(zero, &load_smi_eax, Label::kNear);
|
| __ cmp(FieldOperand(eax, HeapObject::kMapOffset), factory->heap_number_map());
|
| __ j(equal, &load_float_eax, Label::kNear);
|
| __ jmp(not_numbers); // Argument in eax is not a number.
|
| @@ -2674,7 +2674,7 @@
|
| __ mov(scratch, Operand(esp, 2 * kPointerSize));
|
| }
|
| __ test(scratch, Immediate(kSmiTagMask));
|
| - __ j(zero, &load_smi_1, not_taken, Label::kNear);
|
| + __ j(zero, &load_smi_1, Label::kNear);
|
| __ fld_d(FieldOperand(scratch, HeapNumber::kValueOffset));
|
| __ bind(&done_load_1);
|
|
|
| @@ -2684,7 +2684,7 @@
|
| __ mov(scratch, Operand(esp, 1 * kPointerSize));
|
| }
|
| __ test(scratch, Immediate(kSmiTagMask));
|
| - __ j(zero, &load_smi_2, not_taken, Label::kNear);
|
| + __ j(zero, &load_smi_2, Label::kNear);
|
| __ fld_d(FieldOperand(scratch, HeapNumber::kValueOffset));
|
| __ jmp(&done, Label::kNear);
|
|
|
| @@ -2730,7 +2730,7 @@
|
| // Test if both operands are floats or smi -> scratch=k_is_float;
|
| // Otherwise scratch = k_not_float.
|
| __ test(edx, Immediate(kSmiTagMask));
|
| - __ j(zero, &test_other, not_taken, Label::kNear); // argument in edx is OK
|
| + __ j(zero, &test_other, Label::kNear); // argument in edx is OK
|
| __ mov(scratch, FieldOperand(edx, HeapObject::kMapOffset));
|
| Factory* factory = masm->isolate()->factory();
|
| __ cmp(scratch, factory->heap_number_map());
|
| @@ -2923,7 +2923,7 @@
|
| // Check that the key is a smi.
|
| Label slow;
|
| __ test(edx, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &slow, not_taken);
|
| + __ j(not_zero, &slow);
|
|
|
| // Check if the calling frame is an arguments adaptor frame.
|
| Label adaptor;
|
| @@ -2936,7 +2936,7 @@
|
| // through register eax. Use unsigned comparison to get negative
|
| // check for free.
|
| __ cmp(edx, Operand(eax));
|
| - __ j(above_equal, &slow, not_taken);
|
| + __ j(above_equal, &slow);
|
|
|
| // Read the argument from the stack and return it.
|
| STATIC_ASSERT(kSmiTagSize == 1);
|
| @@ -2952,7 +2952,7 @@
|
| __ bind(&adaptor);
|
| __ mov(ecx, Operand(ebx, ArgumentsAdaptorFrameConstants::kLengthOffset));
|
| __ cmp(edx, Operand(ecx));
|
| - __ j(above_equal, &slow, not_taken);
|
| + __ j(above_equal, &slow);
|
|
|
| // Read the argument from the stack and return it.
|
| STATIC_ASSERT(kSmiTagSize == 1);
|
| @@ -3115,7 +3115,7 @@
|
| ExternalReference::address_of_regexp_stack_memory_size(masm->isolate());
|
| __ mov(ebx, Operand::StaticVariable(address_of_regexp_stack_memory_size));
|
| __ test(ebx, Operand(ebx));
|
| - __ j(zero, &runtime, not_taken);
|
| + __ j(zero, &runtime);
|
|
|
| // Check that the first argument is a JSRegExp object.
|
| __ mov(eax, Operand(esp, kJSRegExpOffset));
|
| @@ -3336,10 +3336,10 @@
|
| // Check the result.
|
| Label success;
|
| __ cmp(eax, NativeRegExpMacroAssembler::SUCCESS);
|
| - __ j(equal, &success, taken);
|
| + __ j(equal, &success);
|
| Label failure;
|
| __ cmp(eax, NativeRegExpMacroAssembler::FAILURE);
|
| - __ j(equal, &failure, taken);
|
| + __ j(equal, &failure);
|
| __ cmp(eax, NativeRegExpMacroAssembler::EXCEPTION);
|
| // If not exception it can only be retry. Handle that in the runtime system.
|
| __ j(not_equal, &runtime);
|
| @@ -3658,7 +3658,7 @@
|
| __ mov(ecx, Operand(edx));
|
| __ or_(ecx, Operand(eax));
|
| __ test(ecx, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &non_smi, not_taken);
|
| + __ j(not_zero, &non_smi);
|
| __ sub(edx, Operand(eax)); // Return on the result of the subtraction.
|
| __ j(no_overflow, &smi_done);
|
| __ not_(edx); // Correct sign in case of overflow. edx is never 0 here.
|
| @@ -3833,7 +3833,7 @@
|
| __ ucomisd(xmm0, xmm1);
|
|
|
| // Don't base result on EFLAGS when a NaN is involved.
|
| - __ j(parity_even, &unordered, not_taken);
|
| + __ j(parity_even, &unordered);
|
| // Return a result of -1, 0, or 1, based on EFLAGS.
|
| __ mov(eax, 0); // equal
|
| __ mov(ecx, Immediate(Smi::FromInt(1)));
|
| @@ -3849,12 +3849,12 @@
|
| __ FCmp();
|
|
|
| // Don't base result on EFLAGS when a NaN is involved.
|
| - __ j(parity_even, &unordered, not_taken);
|
| + __ j(parity_even, &unordered);
|
|
|
| Label below_label, above_label;
|
| // Return a result of -1, 0, or 1, based on EFLAGS.
|
| - __ j(below, &below_label, not_taken);
|
| - __ j(above, &above_label, not_taken);
|
| + __ j(below, &below_label);
|
| + __ j(above, &above_label);
|
|
|
| __ Set(eax, Immediate(0));
|
| __ ret(0);
|
| @@ -4012,7 +4012,7 @@
|
|
|
| // Check if receiver is a smi (which is a number value).
|
| __ test(eax, Immediate(kSmiTagMask));
|
| - __ j(zero, &receiver_is_value, not_taken);
|
| + __ j(zero, &receiver_is_value);
|
|
|
| // Check if the receiver is a valid JS object.
|
| __ CmpObjectType(eax, FIRST_JS_OBJECT_TYPE, edi);
|
| @@ -4035,10 +4035,10 @@
|
|
|
| // Check that the function really is a JavaScript function.
|
| __ test(edi, Immediate(kSmiTagMask));
|
| - __ j(zero, &slow, not_taken);
|
| + __ j(zero, &slow);
|
| // Goto slow case if we do not have a function.
|
| __ CmpObjectType(edi, JS_FUNCTION_TYPE, ecx);
|
| - __ j(not_equal, &slow, not_taken);
|
| + __ j(not_equal, &slow);
|
|
|
| // Fast-case: Just invoke the function.
|
| ParameterCount actual(argc_);
|
| @@ -4132,7 +4132,7 @@
|
| __ lea(ecx, Operand(eax, 1));
|
| // Lower 2 bits of ecx are 0 iff eax has failure tag.
|
| __ test(ecx, Immediate(kFailureTagMask));
|
| - __ j(zero, &failure_returned, not_taken);
|
| + __ j(zero, &failure_returned);
|
|
|
| ExternalReference pending_exception_address(
|
| Isolate::k_pending_exception_address, masm->isolate());
|
| @@ -4163,7 +4163,7 @@
|
| // 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, taken);
|
| + __ j(zero, &retry);
|
|
|
| // Special handling of out of memory exceptions.
|
| __ cmp(eax, reinterpret_cast<int32_t>(Failure::OutOfMemoryException()));
|
| @@ -4417,7 +4417,7 @@
|
|
|
| // Check that the left hand is a JS object.
|
| __ test(object, Immediate(kSmiTagMask));
|
| - __ j(zero, ¬_js_object, not_taken);
|
| + __ j(zero, ¬_js_object);
|
| __ IsObjectJSObjectType(object, map, scratch, ¬_js_object);
|
|
|
| // If there is a call site cache don't look in the global cache, but do the
|
| @@ -4445,7 +4445,7 @@
|
|
|
| // Check that the function prototype is a JS object.
|
| __ test(prototype, Immediate(kSmiTagMask));
|
| - __ j(zero, &slow, not_taken);
|
| + __ j(zero, &slow);
|
| __ IsObjectJSObjectType(prototype, scratch, scratch, &slow);
|
|
|
| // Update the global instanceof or call site inlined cache with the current
|
| @@ -4535,9 +4535,9 @@
|
| // 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.
|
| __ test(function, Immediate(kSmiTagMask));
|
| - __ j(zero, &slow, not_taken);
|
| + __ j(zero, &slow);
|
| __ CmpObjectType(function, JS_FUNCTION_TYPE, scratch);
|
| - __ j(not_equal, &slow, not_taken);
|
| + __ j(not_equal, &slow);
|
|
|
| // Null is not instance of anything.
|
| __ cmp(object, factory->null_value());
|
| @@ -4548,7 +4548,7 @@
|
| __ bind(&object_not_null);
|
| // Smi values is not instance of anything.
|
| __ test(object, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &object_not_null_or_smi, not_taken);
|
| + __ j(not_zero, &object_not_null_or_smi);
|
| __ Set(eax, Immediate(Smi::FromInt(1)));
|
| __ ret((HasArgsInRegisters() ? 0 : 2) * kPointerSize);
|
|
|
| @@ -4820,7 +4820,7 @@
|
| __ test(code_,
|
| Immediate(kSmiTagMask |
|
| ((~String::kMaxAsciiCharCode) << kSmiTagSize)));
|
| - __ j(not_zero, &slow_case_, not_taken);
|
| + __ j(not_zero, &slow_case_);
|
|
|
| Factory* factory = masm->isolate()->factory();
|
| __ Set(result_, Immediate(factory->single_character_string_cache()));
|
| @@ -4832,7 +4832,7 @@
|
| code_, times_half_pointer_size,
|
| FixedArray::kHeaderSize));
|
| __ cmp(result_, factory->undefined_value());
|
| - __ j(equal, &slow_case_, not_taken);
|
| + __ j(equal, &slow_case_);
|
| __ bind(&exit_);
|
| }
|
|
|
| @@ -5781,7 +5781,7 @@
|
| __ mov(ecx, Operand(edx));
|
| __ or_(ecx, Operand(eax));
|
| __ test(ecx, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &miss, not_taken, Label::kNear);
|
| + __ j(not_zero, &miss, Label::kNear);
|
|
|
| if (GetCondition() == equal) {
|
| // For equality we do not care about the sign of the result.
|
| @@ -5811,12 +5811,12 @@
|
| __ mov(ecx, Operand(edx));
|
| __ and_(ecx, Operand(eax));
|
| __ test(ecx, Immediate(kSmiTagMask));
|
| - __ j(zero, &generic_stub, not_taken, Label::kNear);
|
| + __ j(zero, &generic_stub, Label::kNear);
|
|
|
| __ CmpObjectType(eax, HEAP_NUMBER_TYPE, ecx);
|
| - __ j(not_equal, &miss, not_taken, Label::kNear);
|
| + __ j(not_equal, &miss, Label::kNear);
|
| __ CmpObjectType(edx, HEAP_NUMBER_TYPE, ecx);
|
| - __ j(not_equal, &miss, not_taken, Label::kNear);
|
| + __ j(not_equal, &miss, Label::kNear);
|
|
|
| // Inlining the double comparison and falling back to the general compare
|
| // stub if NaN is involved or SS2 or CMOV is unsupported.
|
| @@ -5832,7 +5832,7 @@
|
| __ ucomisd(xmm0, xmm1);
|
|
|
| // Don't base result on EFLAGS when a NaN is involved.
|
| - __ j(parity_even, &unordered, not_taken, Label::kNear);
|
| + __ j(parity_even, &unordered, Label::kNear);
|
|
|
| // Return a result of -1, 0, or 1, based on EFLAGS.
|
| // Performing mov, because xor would destroy the flag register.
|
| @@ -5984,12 +5984,12 @@
|
| __ mov(ecx, Operand(edx));
|
| __ and_(ecx, Operand(eax));
|
| __ test(ecx, Immediate(kSmiTagMask));
|
| - __ j(zero, &miss, not_taken, Label::kNear);
|
| + __ j(zero, &miss, Label::kNear);
|
|
|
| __ CmpObjectType(eax, JS_OBJECT_TYPE, ecx);
|
| - __ j(not_equal, &miss, not_taken, Label::kNear);
|
| + __ j(not_equal, &miss, Label::kNear);
|
| __ CmpObjectType(edx, JS_OBJECT_TYPE, ecx);
|
| - __ j(not_equal, &miss, not_taken, Label::kNear);
|
| + __ j(not_equal, &miss, Label::kNear);
|
|
|
| ASSERT(GetCondition() == equal);
|
| __ sub(eax, Operand(edx));
|
| @@ -6069,17 +6069,17 @@
|
| __ mov(entity_name, Operand(properties, index, times_half_pointer_size,
|
| kElementsStartOffset - kHeapObjectTag));
|
| __ cmp(entity_name, masm->isolate()->factory()->undefined_value());
|
| - __ j(equal, done, taken);
|
| + __ j(equal, done);
|
|
|
| // Stop if found the property.
|
| __ cmp(entity_name, Handle<String>(name));
|
| - __ j(equal, miss, not_taken);
|
| + __ j(equal, miss);
|
|
|
| // Check if the entry name is not a symbol.
|
| __ mov(entity_name, FieldOperand(entity_name, HeapObject::kMapOffset));
|
| __ test_b(FieldOperand(entity_name, Map::kInstanceTypeOffset),
|
| kIsSymbolMask);
|
| - __ j(zero, miss, not_taken);
|
| + __ j(zero, miss);
|
| }
|
|
|
| StringDictionaryLookupStub stub(properties,
|
| @@ -6136,7 +6136,7 @@
|
| r0,
|
| times_4,
|
| kElementsStartOffset - kHeapObjectTag));
|
| - __ j(equal, done, taken);
|
| + __ j(equal, done);
|
| }
|
|
|
| StringDictionaryLookupStub stub(elements,
|
|
|