Index: src/ia32/full-codegen-ia32.cc |
=================================================================== |
--- src/ia32/full-codegen-ia32.cc (revision 5449) |
+++ src/ia32/full-codegen-ia32.cc (working copy) |
@@ -162,7 +162,7 @@ |
} |
{ Comment cmnt(masm_, "[ Stack check"); |
- Label ok; |
+ NearLabel ok; |
ExternalReference stack_limit = |
ExternalReference::address_of_stack_limit(); |
__ cmp(esp, Operand::StaticVariable(stack_limit)); |
@@ -403,7 +403,7 @@ |
break; |
case Expression::kValue: { |
- Label done; |
+ NearLabel done; |
switch (location_) { |
case kAccumulator: |
__ bind(materialize_true); |
@@ -685,7 +685,7 @@ |
// Perform the comparison as if via '==='. |
__ mov(edx, Operand(esp, 0)); // Switch value. |
if (ShouldInlineSmiCase(Token::EQ_STRICT)) { |
- Label slow_case; |
+ NearLabel slow_case; |
__ mov(ecx, edx); |
__ or_(ecx, Operand(eax)); |
__ test(ecx, Immediate(kSmiTagMask)); |
@@ -745,7 +745,7 @@ |
__ j(equal, &exit); |
// Convert the object to a JS object. |
- Label convert, done_convert; |
+ NearLabel convert, done_convert; |
__ test(eax, Immediate(kSmiTagMask)); |
__ j(zero, &convert); |
__ CmpObjectType(eax, FIRST_JS_OBJECT_TYPE, ecx); |
@@ -786,7 +786,7 @@ |
__ j(zero, &call_runtime); |
// For all objects but the receiver, check that the cache is empty. |
- Label check_prototype; |
+ NearLabel check_prototype; |
__ cmp(ecx, Operand(eax)); |
__ j(equal, &check_prototype); |
__ mov(edx, FieldOperand(edx, DescriptorArray::kEnumCacheBridgeCacheOffset)); |
@@ -801,7 +801,7 @@ |
// The enum cache is valid. Load the map of the object being |
// iterated over and use the cache for the iteration. |
- Label use_cache; |
+ NearLabel use_cache; |
__ mov(eax, FieldOperand(eax, HeapObject::kMapOffset)); |
__ jmp(&use_cache); |
@@ -813,7 +813,7 @@ |
// If we got a map from the runtime call, we can do a fast |
// modification check. Otherwise, we got a fixed array, and we have |
// to do a slow check. |
- Label fixed_array; |
+ NearLabel fixed_array; |
__ cmp(FieldOperand(eax, HeapObject::kMapOffset), Factory::meta_map()); |
__ j(not_equal, &fixed_array); |
@@ -855,7 +855,7 @@ |
// Check if the expected map still matches that of the enumerable. |
// If not, we have to filter the key. |
- Label update_each; |
+ NearLabel update_each; |
__ mov(ecx, Operand(esp, 4 * kPointerSize)); |
__ cmp(edx, FieldOperand(ecx, HeapObject::kMapOffset)); |
__ j(equal, &update_each); |
@@ -878,7 +878,8 @@ |
EmitAssignment(stmt->each()); |
// Generate code for the body of the loop. |
- Label stack_limit_hit, stack_check_done; |
+ Label stack_limit_hit; |
+ NearLabel stack_check_done; |
Visit(stmt->body()); |
__ StackLimitCheck(&stack_limit_hit); |
@@ -960,7 +961,7 @@ |
if (s != NULL && s->is_eval_scope()) { |
// Loop up the context chain. There is no frame effect so it is |
// safe to use raw labels here. |
- Label next, fast; |
+ NearLabel next, fast; |
if (!context.is(temp)) { |
__ mov(temp, context); |
} |
@@ -1119,7 +1120,7 @@ |
if (var->mode() == Variable::CONST) { |
// Constants may be the hole value if they have not been initialized. |
// Unhole them. |
- Label done; |
+ NearLabel done; |
MemOperand slot_operand = EmitSlotSearch(slot, eax); |
__ mov(eax, slot_operand); |
__ cmp(eax, Factory::the_hole_value()); |
@@ -1168,7 +1169,7 @@ |
void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) { |
Comment cmnt(masm_, "[ RegExpLiteral"); |
- Label materialized; |
+ NearLabel materialized; |
// Registers will be used as follows: |
// edi = JS function. |
// ecx = literals array. |
@@ -1489,7 +1490,8 @@ |
OverwriteMode mode, |
bool left_is_constant_smi, |
Smi* value) { |
- Label call_stub, done; |
+ NearLabel call_stub; |
+ Label done; |
__ add(Operand(eax), Immediate(value)); |
__ j(overflow, &call_stub); |
__ test(eax, Immediate(kSmiTagMask)); |
@@ -2714,7 +2716,7 @@ |
VisitForValue(args->at(0), kAccumulator); // Load the object. |
- Label done; |
+ NearLabel done; |
// If the object is a smi return the object. |
__ test(eax, Immediate(kSmiTagMask)); |
__ j(zero, &done); |
@@ -2745,7 +2747,7 @@ |
VisitForValue(args->at(1), kAccumulator); // Load the value. |
__ pop(ebx); // eax = value. ebx = object. |
- Label done; |
+ NearLabel done; |
// If the object is a smi, return the value. |
__ test(ebx, Immediate(kSmiTagMask)); |
__ j(zero, &done); |
@@ -3273,7 +3275,7 @@ |
VisitForValue(expr->expression(), kAccumulator); |
Label done; |
if (ShouldInlineSmiCase(expr->op())) { |
- Label call_stub; |
+ NearLabel call_stub; |
__ test(eax, Immediate(kSmiTagMask)); |
__ j(not_zero, &call_stub); |
__ lea(eax, Operand(eax, kSmiTagMask)); |
@@ -3348,7 +3350,7 @@ |
} |
// Call ToNumber only if operand is not a smi. |
- Label no_conversion; |
+ NearLabel no_conversion; |
if (ShouldInlineSmiCase(expr->op())) { |
__ test(eax, Immediate(kSmiTagMask)); |
__ j(zero, &no_conversion); |
@@ -3386,7 +3388,8 @@ |
} |
// Inline smi case if we are in a loop. |
- Label stub_call, done; |
+ NearLabel stub_call; |
+ Label done; |
if (ShouldInlineSmiCase(expr->op())) { |
if (expr->op() == Token::INC) { |
__ add(Operand(eax), Immediate(Smi::FromInt(1))); |
@@ -3673,7 +3676,7 @@ |
} |
if (ShouldInlineSmiCase(op)) { |
- Label slow_case; |
+ NearLabel slow_case; |
__ mov(ecx, Operand(edx)); |
__ or_(ecx, Operand(eax)); |
__ test(ecx, Immediate(kSmiTagMask)); |