Index: src/x64/code-stubs-x64.cc |
=================================================================== |
--- src/x64/code-stubs-x64.cc (revision 5449) |
+++ src/x64/code-stubs-x64.cc (working copy) |
@@ -203,7 +203,7 @@ |
void ToBooleanStub::Generate(MacroAssembler* masm) { |
- Label false_result, true_result, not_string; |
+ NearLabel false_result, true_result, not_string; |
__ movq(rax, Operand(rsp, 1 * kPointerSize)); |
// 'null' => false. |
@@ -989,7 +989,7 @@ |
Label runtime_call; |
Label runtime_call_clear_stack; |
Label input_not_smi; |
- Label loaded; |
+ NearLabel loaded; |
// Test that rax is a number. |
__ movq(rax, Operand(rsp, kPointerSize)); |
__ JumpIfNotSmi(rax, &input_not_smi); |
@@ -1069,7 +1069,7 @@ |
__ addl(rcx, rcx); |
__ lea(rcx, Operand(rax, rcx, times_8, 0)); |
// Check if cache matches: Double value is stored in uint32_t[2] array. |
- Label cache_miss; |
+ NearLabel cache_miss; |
__ cmpq(rbx, Operand(rcx, 0)); |
__ j(not_equal, &cache_miss); |
// Cache hit! |
@@ -1160,7 +1160,7 @@ |
// Compute st(0) % st(1) |
{ |
- Label partial_remainder_loop; |
+ NearLabel partial_remainder_loop; |
__ bind(&partial_remainder_loop); |
__ fprem1(); |
__ fwait(); |
@@ -1202,7 +1202,7 @@ |
// cvttsd2si (32-bit version) directly. |
Register double_exponent = rbx; |
Register double_value = rdi; |
- Label done, exponent_63_plus; |
+ NearLabel done, exponent_63_plus; |
// Get double and extract exponent. |
__ movq(double_value, FieldOperand(source, HeapNumber::kValueOffset)); |
// Clear result preemptively, in case we need to return zero. |
@@ -1758,7 +1758,7 @@ |
// rcx: RegExp data (FixedArray) |
// Check the representation and encoding of the subject string. |
- Label seq_ascii_string, seq_two_byte_string, check_code; |
+ NearLabel seq_ascii_string, seq_two_byte_string, check_code; |
__ movq(rax, Operand(rsp, kSubjectOffset)); |
__ movq(rbx, FieldOperand(rax, HeapObject::kMapOffset)); |
__ movzxbl(rbx, FieldOperand(rbx, Map::kInstanceTypeOffset)); |
@@ -1883,7 +1883,7 @@ |
// Argument 4: End of string data |
// Argument 3: Start of string data |
- Label setup_two_byte, setup_rest; |
+ NearLabel setup_two_byte, setup_rest; |
__ testb(rdi, rdi); |
__ j(zero, &setup_two_byte); |
__ SmiToInteger32(rdi, FieldOperand(rax, String::kLengthOffset)); |
@@ -1910,10 +1910,10 @@ |
__ pop(rsi); |
// Check the result. |
- Label success; |
+ NearLabel success; |
__ cmpl(rax, Immediate(NativeRegExpMacroAssembler::SUCCESS)); |
__ j(equal, &success); |
- Label failure; |
+ NearLabel failure; |
__ cmpl(rax, Immediate(NativeRegExpMacroAssembler::FAILURE)); |
__ j(equal, &failure); |
__ cmpl(rax, Immediate(NativeRegExpMacroAssembler::EXCEPTION)); |
@@ -1968,7 +1968,7 @@ |
// rbx: last_match_info backing store (FixedArray) |
// rcx: offsets vector |
// rdx: number of capture registers |
- Label next_capture, done; |
+ NearLabel next_capture, done; |
// Capture register counter starts from number of capture registers and |
// counts down until wraping after zero. |
__ bind(&next_capture); |
@@ -2122,14 +2122,14 @@ |
// Two identical objects are equal unless they are both NaN or undefined. |
{ |
- Label not_identical; |
+ NearLabel not_identical; |
__ cmpq(rax, rdx); |
__ j(not_equal, ¬_identical); |
if (cc_ != equal) { |
// Check for undefined. undefined OP undefined is false even though |
// undefined == undefined. |
- Label check_for_nan; |
+ NearLabel check_for_nan; |
__ CompareRoot(rdx, Heap::kUndefinedValueRootIndex); |
__ j(not_equal, &check_for_nan); |
__ Set(rax, NegativeComparisonResult(cc_)); |
@@ -2147,7 +2147,7 @@ |
__ Set(rax, EQUAL); |
__ ret(0); |
} else { |
- Label heap_number; |
+ NearLabel heap_number; |
// If it's not a heap number, then return equal for (in)equality operator. |
__ Cmp(FieldOperand(rdx, HeapObject::kMapOffset), |
Factory::heap_number_map()); |
@@ -2211,7 +2211,7 @@ |
// If the first object is a JS object, we have done pointer comparison. |
STATIC_ASSERT(LAST_TYPE == JS_FUNCTION_TYPE); |
- Label first_non_object; |
+ NearLabel first_non_object; |
__ CmpObjectType(rax, FIRST_JS_OBJECT_TYPE, rcx); |
__ j(below, &first_non_object); |
// Return non-zero (eax (not rax) is not zero) |
@@ -2240,7 +2240,7 @@ |
// Generate the number comparison code. |
if (include_number_compare_) { |
Label non_number_comparison; |
- Label unordered; |
+ NearLabel unordered; |
FloatingPointHelper::LoadSSE2UnknownOperands(masm, &non_number_comparison); |
__ xorl(rax, rax); |
__ xorl(rcx, rcx); |
@@ -2304,7 +2304,7 @@ |
// Not strict equality. Objects are unequal if |
// they are both JSObjects and not undetectable, |
// and their pointers are different. |
- Label not_both_objects, return_unequal; |
+ NearLabel not_both_objects, return_unequal; |
// At most one is a smi, so we can test for smi by adding the two. |
// A smi plus a heap object has the low bit set, a heap object plus |
// a heap object has the low bit clear. |
@@ -2462,7 +2462,7 @@ |
// Before returning we restore the context from the frame pointer if not NULL. |
// The frame pointer is NULL in the exception handler of a JS entry frame. |
__ xor_(rsi, rsi); // tentatively set context pointer to NULL |
- Label skip; |
+ NearLabel skip; |
__ cmpq(rbp, Immediate(0)); |
__ j(equal, &skip); |
__ movq(rsi, Operand(rbp, StandardFrameConstants::kContextOffset)); |
@@ -2622,7 +2622,7 @@ |
// Handling of failure. |
__ bind(&failure_returned); |
- Label retry; |
+ NearLabel retry; |
// If the returned exception is RETRY_AFTER_GC continue at retry label |
STATIC_ASSERT(Failure::RETRY_AFTER_GC == 0); |
__ testl(rax, Immediate(((1 << kFailureTypeTagSize) - 1) << kFailureTagSize)); |
@@ -2662,7 +2662,7 @@ |
__ movq(rsp, Operand(kScratchRegister, 0)); |
// Unwind the handlers until the ENTRY handler is found. |
- Label loop, done; |
+ NearLabel loop, done; |
__ bind(&loop); |
// Load the type of the current stack handler. |
const int kStateOffset = StackHandlerConstants::kStateOffset; |
@@ -2932,7 +2932,7 @@ |
// rdx is function, rax is map. |
// Look up the function and the map in the instanceof cache. |
- Label miss; |
+ NearLabel miss; |
__ CompareRoot(rdx, Heap::kInstanceofCacheFunctionRootIndex); |
__ j(not_equal, &miss); |
__ CompareRoot(rax, Heap::kInstanceofCacheMapRootIndex); |
@@ -2960,7 +2960,7 @@ |
__ movq(rcx, FieldOperand(rax, Map::kPrototypeOffset)); |
// Loop through the prototype chain looking for the function prototype. |
- Label loop, is_instance, is_not_instance; |
+ NearLabel loop, is_instance, is_not_instance; |
__ LoadRoot(kScratchRegister, Heap::kNullValueRootIndex); |
__ bind(&loop); |
__ cmpq(rcx, rbx); |
@@ -3265,7 +3265,7 @@ |
// rax: first string |
// rdx: second string |
// Check if either of the strings are empty. In that case return the other. |
- Label second_not_zero_length, both_not_zero_length; |
+ NearLabel second_not_zero_length, both_not_zero_length; |
__ movq(rcx, FieldOperand(rdx, String::kLengthOffset)); |
__ SmiTest(rcx); |
__ j(not_zero, &second_not_zero_length); |
@@ -3521,7 +3521,7 @@ |
ASSERT(count.is(rcx)); // rep movs count |
// Nothing to do for zero characters. |
- Label done; |
+ NearLabel done; |
__ testl(count, count); |
__ j(zero, &done); |
@@ -3532,7 +3532,7 @@ |
} |
// Don't enter the rep movs if there are less than 4 bytes to copy. |
- Label last_bytes; |
+ NearLabel last_bytes; |
__ testl(count, Immediate(~7)); |
__ j(zero, &last_bytes); |
@@ -3576,7 +3576,7 @@ |
// Make sure that both characters are not digits as such strings has a |
// different hash algorithm. Don't try to look for these in the symbol table. |
- Label not_array_index; |
+ NearLabel not_array_index; |
__ leal(scratch, Operand(c1, -'0')); |
__ cmpl(scratch, Immediate(static_cast<int>('9' - '0'))); |
__ j(above, ¬_array_index); |
@@ -3900,7 +3900,7 @@ |
NULL); |
// Register scratch4 now holds left.length - right.length. |
const Register length_difference = scratch4; |
- Label left_shorter; |
+ NearLabel left_shorter; |
__ j(less, &left_shorter); |
// The right string isn't longer that the left one. |
// Get the right string's length by subtracting the (non-negative) difference |
@@ -3910,7 +3910,7 @@ |
// Register scratch1 now holds Min(left.length, right.length). |
const Register min_length = scratch1; |
- Label compare_lengths; |
+ NearLabel compare_lengths; |
// If min-length is zero, go directly to comparing lengths. |
__ SmiTest(min_length); |
__ j(zero, &compare_lengths); |
@@ -3918,7 +3918,7 @@ |
__ SmiToInteger32(min_length, min_length); |
// Registers scratch2 and scratch3 are free. |
- Label result_not_equal; |
+ NearLabel result_not_equal; |
Label loop; |
{ |
// Check characters 0 .. min_length - 1 in a loop. |
@@ -3954,7 +3954,7 @@ |
__ Move(rax, Smi::FromInt(EQUAL)); |
__ ret(0); |
- Label result_greater; |
+ NearLabel result_greater; |
__ bind(&result_not_equal); |
// Unequal comparison of left to right, either character or length. |
__ j(greater, &result_greater); |
@@ -3982,7 +3982,7 @@ |
__ movq(rax, Operand(rsp, 1 * kPointerSize)); // right |
// Check for identity. |
- Label not_same; |
+ NearLabel not_same; |
__ cmpq(rdx, rax); |
__ j(not_equal, ¬_same); |
__ Move(rax, Smi::FromInt(EQUAL)); |