| Index: src/ia32/ic-ia32.cc | 
| diff --git a/src/ia32/ic-ia32.cc b/src/ia32/ic-ia32.cc | 
| index 1e77a78deac3d740030970d8e69eb6bb37ca05fb..819d3a1dc47285e8586d145780c03a1df25ac2e4 100644 | 
| --- a/src/ia32/ic-ia32.cc | 
| +++ b/src/ia32/ic-ia32.cc | 
| @@ -50,11 +50,11 @@ static void GenerateGlobalInstanceTypeCheck(MacroAssembler* masm, | 
| // Register usage: | 
| //   type: holds the receiver instance type on entry. | 
| __ cmp(type, JS_GLOBAL_OBJECT_TYPE); | 
| -  __ j(equal, global_object, not_taken); | 
| +  __ j(equal, global_object, Label::kFar, not_taken); | 
| __ cmp(type, JS_BUILTINS_OBJECT_TYPE); | 
| -  __ j(equal, global_object, not_taken); | 
| +  __ j(equal, global_object, Label::kFar, not_taken); | 
| __ cmp(type, JS_GLOBAL_PROXY_TYPE); | 
| -  __ j(equal, global_object, not_taken); | 
| +  __ j(equal, global_object, Label::kFar, not_taken); | 
| } | 
|  | 
|  | 
| @@ -73,13 +73,13 @@ static void GenerateStringDictionaryReceiverCheck(MacroAssembler* masm, | 
|  | 
| // Check that the receiver isn't a smi. | 
| __ test(receiver, Immediate(kSmiTagMask)); | 
| -  __ j(zero, miss, not_taken); | 
| +  __ j(zero, miss, Label::kFar, not_taken); | 
|  | 
| // Check that the receiver is a valid JS object. | 
| __ mov(r1, FieldOperand(receiver, HeapObject::kMapOffset)); | 
| __ movzx_b(r0, FieldOperand(r1, Map::kInstanceTypeOffset)); | 
| __ cmp(r0, FIRST_JS_OBJECT_TYPE); | 
| -  __ j(below, miss, not_taken); | 
| +  __ j(below, miss, Label::kFar, not_taken); | 
|  | 
| // If this assert fails, we have to check upper bound too. | 
| ASSERT(LAST_TYPE == JS_FUNCTION_TYPE); | 
| @@ -90,14 +90,13 @@ static void GenerateStringDictionaryReceiverCheck(MacroAssembler* masm, | 
| __ test_b(FieldOperand(r1, Map::kBitFieldOffset), | 
| (1 << Map::kIsAccessCheckNeeded) | | 
| (1 << Map::kHasNamedInterceptor)); | 
| -  __ j(not_zero, miss, not_taken); | 
| +  __ j(not_zero, miss, Label::kFar, not_taken); | 
|  | 
| __ mov(r0, FieldOperand(receiver, JSObject::kPropertiesOffset)); | 
| __ CheckMap(r0, FACTORY->hash_table_map(), miss, true); | 
| } | 
|  | 
|  | 
| - | 
| // Helper function used to load a property from a dictionary backing | 
| // storage. This function may fail to load a property even though it is | 
| // in the dictionary, so code at miss_label must always call a backup | 
| @@ -147,7 +146,7 @@ static void GenerateDictionaryLoad(MacroAssembler* masm, | 
| const int kDetailsOffset = kElementsStartOffset + 2 * kPointerSize; | 
| __ test(Operand(elements, r0, times_4, kDetailsOffset - kHeapObjectTag), | 
| Immediate(PropertyDetails::TypeField::mask() << kSmiTagSize)); | 
| -  __ j(not_zero, miss_label, not_taken); | 
| +  __ j(not_zero, miss_label, Label::kFar, not_taken); | 
|  | 
| // Get the value at the masked, scaled index. | 
| const int kValueOffset = kElementsStartOffset + kPointerSize; | 
| @@ -205,7 +204,7 @@ static void GenerateDictionaryStore(MacroAssembler* masm, | 
| PropertyDetails::AttributesField::encode(READ_ONLY)) << kSmiTagSize; | 
| __ test(Operand(elements, r0, times_4, kDetailsOffset - kHeapObjectTag), | 
| Immediate(kTypeAndReadOnlyMask)); | 
| -  __ j(not_zero, miss_label, not_taken); | 
| +  __ j(not_zero, miss_label, Label::kFar, not_taken); | 
|  | 
| // Store the value at the masked, scaled index. | 
| const int kValueOffset = kElementsStartOffset + kPointerSize; | 
| @@ -295,9 +294,9 @@ static void GenerateNumberDictionaryLoad(MacroAssembler* masm, | 
| times_pointer_size, | 
| NumberDictionary::kElementsStartOffset)); | 
| if (i != (kProbes - 1)) { | 
| -      __ j(equal, &done, taken); | 
| +      __ j(equal, &done, Label::kFar, taken); | 
| } else { | 
| -      __ j(not_equal, miss, not_taken); | 
| +      __ j(not_equal, miss, Label::kFar, not_taken); | 
| } | 
| } | 
|  | 
| @@ -375,7 +374,7 @@ static void GenerateKeyedLoadReceiverCheck(MacroAssembler* masm, | 
|  | 
| // Check that the object isn't a smi. | 
| __ test(receiver, Immediate(kSmiTagMask)); | 
| -  __ j(zero, slow, not_taken); | 
| +  __ j(zero, slow, Label::kFar, not_taken); | 
|  | 
| // Get the map of the receiver. | 
| __ mov(map, FieldOperand(receiver, HeapObject::kMapOffset)); | 
| @@ -383,7 +382,7 @@ static void GenerateKeyedLoadReceiverCheck(MacroAssembler* masm, | 
| // Check bit field. | 
| __ test_b(FieldOperand(map, Map::kBitFieldOffset), | 
| (1 << Map::kIsAccessCheckNeeded) | (1 << interceptor_bit)); | 
| -  __ j(not_zero, slow, not_taken); | 
| +  __ j(not_zero, slow, Label::kFar, not_taken); | 
| // Check that the object is some kind of JS object EXCEPT JS Value type. | 
| // In the case that the object is a value-wrapper object, | 
| // we enter the runtime system to make sure that indexing | 
| @@ -391,7 +390,7 @@ static void GenerateKeyedLoadReceiverCheck(MacroAssembler* masm, | 
| ASSERT(JS_OBJECT_TYPE > JS_VALUE_TYPE); | 
|  | 
| __ CmpInstanceType(map, JS_OBJECT_TYPE); | 
| -  __ j(below, slow, not_taken); | 
| +  __ j(below, slow, Label::kFar, not_taken); | 
| } | 
|  | 
|  | 
| @@ -454,12 +453,12 @@ static void GenerateKeyStringCheck(MacroAssembler* masm, | 
| // Is the string an array index, with cached numeric value? | 
| __ mov(hash, FieldOperand(key, String::kHashFieldOffset)); | 
| __ test(hash, Immediate(String::kContainsCachedArrayIndexMask)); | 
| -  __ j(zero, index_string, not_taken); | 
| +  __ j(zero, index_string, Label::kFar, not_taken); | 
|  | 
| // Is the string a symbol? | 
| ASSERT(kSymbolTag != 0); | 
| __ test_b(FieldOperand(map, Map::kInstanceTypeOffset), kIsSymbolMask); | 
| -  __ j(zero, not_symbol, not_taken); | 
| +  __ j(zero, not_symbol, Label::kFar, not_taken); | 
| } | 
|  | 
|  | 
| @@ -474,7 +473,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { | 
|  | 
| // Check that the key is a smi. | 
| __ test(eax, Immediate(kSmiTagMask)); | 
| -  __ j(not_zero, &check_string, not_taken); | 
| +  __ j(not_zero, &check_string, Label::kFar, not_taken); | 
| __ bind(&index_smi); | 
| // Now the key is known to be a smi. This place is also jumped to from | 
| // where a numeric string is converted to a smi. | 
| @@ -486,7 +485,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { | 
| // now in ecx. | 
| __ test_b(FieldOperand(ecx, Map::kBitField2Offset), | 
| 1 << Map::kHasFastElements); | 
| -  __ j(zero, &check_number_dictionary, not_taken); | 
| +  __ j(zero, &check_number_dictionary, Label::kFar, not_taken); | 
|  | 
| GenerateFastArrayLoad(masm, | 
| edx, | 
| @@ -664,11 +663,11 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) { | 
|  | 
| // Check that the receiver isn't a smi. | 
| __ test(edx, Immediate(kSmiTagMask)); | 
| -  __ j(zero, &slow, not_taken); | 
| +  __ j(zero, &slow, Label::kFar, not_taken); | 
|  | 
| // Check that the key is an array index, that is Uint32. | 
| __ test(eax, Immediate(kSmiTagMask | kSmiSignMask)); | 
| -  __ j(not_zero, &slow, not_taken); | 
| +  __ j(not_zero, &slow, Label::kFar, not_taken); | 
|  | 
| // Get the map of the receiver. | 
| __ mov(ecx, FieldOperand(edx, HeapObject::kMapOffset)); | 
| @@ -678,7 +677,7 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) { | 
| __ movzx_b(ecx, FieldOperand(ecx, Map::kBitFieldOffset)); | 
| __ and_(Operand(ecx), Immediate(kSlowCaseBitFieldMask)); | 
| __ cmp(Operand(ecx), Immediate(1 << Map::kHasIndexedInterceptor)); | 
| -  __ j(not_zero, &slow, not_taken); | 
| +  __ j(not_zero, &slow, Label::kFar, not_taken); | 
|  | 
| // Everything is fine, call runtime. | 
| __ pop(ecx); | 
| @@ -709,22 +708,22 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, | 
|  | 
| // Check that the object isn't a smi. | 
| __ test(edx, Immediate(kSmiTagMask)); | 
| -  __ j(zero, &slow, not_taken); | 
| +  __ j(zero, &slow, Label::kFar, not_taken); | 
| // Get the map from the receiver. | 
| __ mov(edi, FieldOperand(edx, HeapObject::kMapOffset)); | 
| // Check that the receiver does not require access checks.  We need | 
| // to do this because this generic stub does not perform map checks. | 
| __ test_b(FieldOperand(edi, Map::kBitFieldOffset), | 
| 1 << Map::kIsAccessCheckNeeded); | 
| -  __ j(not_zero, &slow, not_taken); | 
| +  __ j(not_zero, &slow, Label::kFar, not_taken); | 
| // Check that the key is a smi. | 
| __ test(ecx, Immediate(kSmiTagMask)); | 
| -  __ j(not_zero, &slow, not_taken); | 
| +  __ j(not_zero, &slow, Label::kFar, not_taken); | 
| __ CmpInstanceType(edi, JS_ARRAY_TYPE); | 
| __ j(equal, &array); | 
| // Check that the object is some kind of JS object. | 
| __ CmpInstanceType(edi, FIRST_JS_OBJECT_TYPE); | 
| -  __ j(below, &slow, not_taken); | 
| +  __ j(below, &slow, Label::kFar, not_taken); | 
|  | 
| // Object case: Check key against length in the elements array. | 
| // eax: value | 
| @@ -734,7 +733,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, | 
| // Check that the object is in fast mode and writable. | 
| __ CheckMap(edi, FACTORY->fixed_array_map(), &slow, true); | 
| __ cmp(ecx, FieldOperand(edi, FixedArray::kLengthOffset)); | 
| -  __ j(below, &fast, taken); | 
| +  __ j(below, &fast, Label::kFar, taken); | 
|  | 
| // Slow case: call runtime. | 
| __ bind(&slow); | 
| @@ -749,9 +748,10 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, | 
| // ecx: key, a smi. | 
| // edi: receiver->elements, a FixedArray | 
| // flags: compare (ecx, edx.length()) | 
| -  __ j(not_equal, &slow, not_taken);  // do not leave holes in the array | 
| +  // do not leave holes in the array: | 
| +  __ j(not_equal, &slow, Label::kFar, not_taken); | 
| __ cmp(ecx, FieldOperand(edi, FixedArray::kLengthOffset)); | 
| -  __ j(above_equal, &slow, not_taken); | 
| +  __ j(above_equal, &slow, Label::kFar, not_taken); | 
| // Add 1 to receiver->length, and go to fast array write. | 
| __ add(FieldOperand(edx, JSArray::kLengthOffset), | 
| Immediate(Smi::FromInt(1))); | 
| @@ -770,7 +770,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, | 
| // Check the key against the length in the array, compute the | 
| // address to store into and fall through to fast case. | 
| __ cmp(ecx, FieldOperand(edx, JSArray::kLengthOffset));  // Compare smis. | 
| -  __ j(above_equal, &extra, not_taken); | 
| +  __ j(above_equal, &extra, Label::kFar, not_taken); | 
|  | 
| // Fast case: Do the store. | 
| __ bind(&fast); | 
| @@ -814,9 +814,9 @@ static void GenerateMonomorphicCacheProbe(MacroAssembler* masm, | 
| // | 
| // Check for number. | 
| __ test(edx, Immediate(kSmiTagMask)); | 
| -  __ j(zero, &number, not_taken); | 
| +  __ j(zero, &number, Label::kFar, not_taken); | 
| __ CmpObjectType(edx, HEAP_NUMBER_TYPE, ebx); | 
| -  __ j(not_equal, &non_number, taken); | 
| +  __ j(not_equal, &non_number, Label::kFar, taken); | 
| __ bind(&number); | 
| StubCompiler::GenerateLoadGlobalFunctionPrototype( | 
| masm, Context::NUMBER_FUNCTION_INDEX, edx); | 
| @@ -825,7 +825,7 @@ static void GenerateMonomorphicCacheProbe(MacroAssembler* masm, | 
| // Check for string. | 
| __ bind(&non_number); | 
| __ CmpInstanceType(ebx, FIRST_NONSTRING_TYPE); | 
| -  __ j(above_equal, &non_string, taken); | 
| +  __ j(above_equal, &non_string, Label::kFar, taken); | 
| StubCompiler::GenerateLoadGlobalFunctionPrototype( | 
| masm, Context::STRING_FUNCTION_INDEX, edx); | 
| __ jmp(&probe); | 
| @@ -833,9 +833,9 @@ static void GenerateMonomorphicCacheProbe(MacroAssembler* masm, | 
| // Check for boolean. | 
| __ bind(&non_string); | 
| __ cmp(edx, FACTORY->true_value()); | 
| -  __ j(equal, &boolean, not_taken); | 
| +  __ j(equal, &boolean, Label::kFar, not_taken); | 
| __ cmp(edx, FACTORY->false_value()); | 
| -  __ j(not_equal, &miss, taken); | 
| +  __ j(not_equal, &miss, Label::kFar, taken); | 
| __ bind(&boolean); | 
| StubCompiler::GenerateLoadGlobalFunctionPrototype( | 
| masm, Context::BOOLEAN_FUNCTION_INDEX, edx); | 
| @@ -862,11 +862,11 @@ static void GenerateFunctionTailCall(MacroAssembler* masm, | 
|  | 
| // Check that the result is not a smi. | 
| __ test(edi, Immediate(kSmiTagMask)); | 
| -  __ j(zero, miss, not_taken); | 
| +  __ j(zero, miss, Label::kFar, not_taken); | 
|  | 
| // Check that the value is a JavaScript function, fetching its map into eax. | 
| __ CmpObjectType(edi, JS_FUNCTION_TYPE, eax); | 
| -  __ j(not_equal, miss, not_taken); | 
| +  __ j(not_equal, miss, Label::kFar, not_taken); | 
|  | 
| // Invoke the function. | 
| ParameterCount actual(argc); | 
| @@ -942,13 +942,13 @@ static void GenerateCallMiss(MacroAssembler* masm, | 
| Label invoke, global; | 
| __ mov(edx, Operand(esp, (argc + 1) * kPointerSize));  // receiver | 
| __ test(edx, Immediate(kSmiTagMask)); | 
| -    __ j(zero, &invoke, not_taken); | 
| +    __ j(zero, &invoke, Label::kNear, not_taken); | 
| __ mov(ebx, FieldOperand(edx, HeapObject::kMapOffset)); | 
| __ movzx_b(ebx, FieldOperand(ebx, Map::kInstanceTypeOffset)); | 
| __ cmp(ebx, JS_GLOBAL_OBJECT_TYPE); | 
| -    __ j(equal, &global); | 
| +    __ j(equal, &global, Label::kNear); | 
| __ cmp(ebx, JS_BUILTINS_OBJECT_TYPE); | 
| -    __ j(not_equal, &invoke); | 
| +    __ j(not_equal, &invoke, Label::kNear); | 
|  | 
| // Patch the receiver on the stack. | 
| __ bind(&global); | 
| @@ -1024,7 +1024,7 @@ void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) { | 
|  | 
| // Check that the key is a smi. | 
| __ test(ecx, Immediate(kSmiTagMask)); | 
| -  __ j(not_zero, &check_string, not_taken); | 
| +  __ j(not_zero, &check_string, Label::kFar, not_taken); | 
|  | 
| __ bind(&index_smi); | 
| // Now the key is known to be a smi. This place is also jumped to from | 
| @@ -1314,22 +1314,22 @@ void StoreIC::GenerateArrayLength(MacroAssembler* masm) { | 
|  | 
| // Check that the receiver isn't a smi. | 
| __ test(receiver, Immediate(kSmiTagMask)); | 
| -  __ j(zero, &miss, not_taken); | 
| +  __ j(zero, &miss, Label::kFar, not_taken); | 
|  | 
| // Check that the object is a JS array. | 
| __ CmpObjectType(receiver, JS_ARRAY_TYPE, scratch); | 
| -  __ j(not_equal, &miss, not_taken); | 
| +  __ j(not_equal, &miss, Label::kFar, not_taken); | 
|  | 
| // Check that elements are FixedArray. | 
| // We rely on StoreIC_ArrayLength below to deal with all types of | 
| // fast elements (including COW). | 
| __ mov(scratch, FieldOperand(receiver, JSArray::kElementsOffset)); | 
| __ CmpObjectType(scratch, FIXED_ARRAY_TYPE, scratch); | 
| -  __ j(not_equal, &miss, not_taken); | 
| +  __ j(not_equal, &miss, Label::kFar, not_taken); | 
|  | 
| // Check that value is a smi. | 
| __ test(value, Immediate(kSmiTagMask)); | 
| -  __ j(not_zero, &miss, not_taken); | 
| +  __ j(not_zero, &miss, Label::kFar, not_taken); | 
|  | 
| // Prepare tail call to StoreIC_ArrayLength. | 
| __ pop(scratch); | 
|  |