| Index: src/ia32/builtins-ia32.cc
|
| ===================================================================
|
| --- src/ia32/builtins-ia32.cc (revision 7948)
|
| +++ src/ia32/builtins-ia32.cc (working copy)
|
| @@ -356,12 +356,12 @@
|
|
|
| // If the result is a smi, it is *not* an object in the ECMA sense.
|
| __ test(eax, Immediate(kSmiTagMask));
|
| - __ j(zero, &use_receiver, not_taken);
|
| + __ j(zero, &use_receiver);
|
|
|
| // If the type of the result (stored in its map) is less than
|
| // FIRST_JS_OBJECT_TYPE, it is not an object in the ECMA sense.
|
| __ CmpObjectType(eax, FIRST_JS_OBJECT_TYPE, ecx);
|
| - __ j(above_equal, &exit, not_taken);
|
| + __ j(above_equal, &exit);
|
|
|
| // Throw away the result of the constructor invocation and use the
|
| // on-stack receiver as the result.
|
| @@ -520,15 +520,15 @@
|
| __ SmiUntag(ecx);
|
|
|
| // Switch on the state.
|
| - NearLabel not_no_registers, not_tos_eax;
|
| + Label not_no_registers, not_tos_eax;
|
| __ cmp(ecx, FullCodeGenerator::NO_REGISTERS);
|
| - __ j(not_equal, ¬_no_registers);
|
| + __ j(not_equal, ¬_no_registers, Label::kNear);
|
| __ ret(1 * kPointerSize); // Remove state.
|
|
|
| __ bind(¬_no_registers);
|
| __ mov(eax, Operand(esp, 2 * kPointerSize));
|
| __ cmp(ecx, FullCodeGenerator::TOS_REG);
|
| - __ j(not_equal, ¬_tos_eax);
|
| + __ j(not_equal, ¬_tos_eax, Label::kNear);
|
| __ ret(2 * kPointerSize); // Remove state, eax.
|
|
|
| __ bind(¬_tos_eax);
|
| @@ -568,7 +568,7 @@
|
| // 1. Make sure we have at least one argument.
|
| { Label done;
|
| __ test(eax, Operand(eax));
|
| - __ j(not_zero, &done, taken);
|
| + __ j(not_zero, &done);
|
| __ pop(ebx);
|
| __ push(Immediate(factory->undefined_value()));
|
| __ push(ebx);
|
| @@ -582,9 +582,9 @@
|
| // 1 ~ return address.
|
| __ mov(edi, Operand(esp, eax, times_4, 1 * kPointerSize));
|
| __ test(edi, Immediate(kSmiTagMask));
|
| - __ j(zero, &non_function, not_taken);
|
| + __ j(zero, &non_function);
|
| __ CmpObjectType(edi, JS_FUNCTION_TYPE, ecx);
|
| - __ j(not_equal, &non_function, not_taken);
|
| + __ j(not_equal, &non_function);
|
|
|
|
|
| // 3a. Patch the first argument if necessary when calling a function.
|
| @@ -600,13 +600,9 @@
|
| __ j(not_equal, &shift_arguments);
|
|
|
| // Do not transform the receiver for natives (shared already in ebx).
|
| - __ mov(ebx, FieldOperand(ebx, SharedFunctionInfo::kScriptOffset));
|
| - __ cmp(ebx, factory->undefined_value());
|
| - __ j(equal, &shift_arguments);
|
| - __ mov(ebx, FieldOperand(ebx, Script::kTypeOffset));
|
| - __ SmiUntag(ebx);
|
| - __ cmp(ebx, Script::TYPE_NATIVE);
|
| - __ j(equal, &shift_arguments);
|
| + __ test_b(FieldOperand(ebx, SharedFunctionInfo::kES5NativeByteOffset),
|
| + 1 << SharedFunctionInfo::kES5NativeBitWithinByte);
|
| + __ j(not_equal, &shift_arguments);
|
|
|
| // Compute the receiver in non-strict mode.
|
| __ mov(ebx, Operand(esp, eax, times_4, 0)); // First argument.
|
| @@ -684,7 +680,7 @@
|
| // 5a. Call non-function via tail call to CALL_NON_FUNCTION builtin.
|
| { Label function;
|
| __ test(edi, Operand(edi));
|
| - __ j(not_zero, &function, taken);
|
| + __ j(not_zero, &function);
|
| __ Set(ebx, Immediate(0));
|
| __ GetBuiltinEntry(edx, Builtins::CALL_NON_FUNCTION);
|
| __ jmp(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(),
|
| @@ -733,7 +729,7 @@
|
| __ shl(edx, kPointerSizeLog2 - kSmiTagSize);
|
| // Check if the arguments will overflow the stack.
|
| __ cmp(ecx, Operand(edx));
|
| - __ j(greater, &okay, taken); // Signed comparison.
|
| + __ j(greater, &okay); // Signed comparison.
|
|
|
| // Out of stack space.
|
| __ push(Operand(ebp, 4 * kPointerSize)); // push this
|
| @@ -767,13 +763,9 @@
|
| Factory* factory = masm->isolate()->factory();
|
|
|
| // Do not transform the receiver for natives (shared already in ecx).
|
| - __ mov(ecx, FieldOperand(ecx, SharedFunctionInfo::kScriptOffset));
|
| - __ cmp(ecx, factory->undefined_value());
|
| - __ j(equal, &push_receiver);
|
| - __ mov(ecx, FieldOperand(ecx, Script::kTypeOffset));
|
| - __ SmiUntag(ecx);
|
| - __ cmp(ecx, Script::TYPE_NATIVE);
|
| - __ j(equal, &push_receiver);
|
| + __ test_b(FieldOperand(ecx, SharedFunctionInfo::kES5NativeByteOffset),
|
| + 1 << SharedFunctionInfo::kES5NativeBitWithinByte);
|
| + __ j(not_equal, &push_receiver);
|
|
|
| // Compute the receiver in non-strict mode.
|
| __ test(ebx, Immediate(kSmiTagMask));
|
| @@ -1577,19 +1569,19 @@
|
|
|
| // If the result was -1 it means that we couldn't optimize the
|
| // function. Just return and continue in the unoptimized version.
|
| - NearLabel skip;
|
| + Label skip;
|
| __ cmp(Operand(eax), Immediate(Smi::FromInt(-1)));
|
| - __ j(not_equal, &skip);
|
| + __ j(not_equal, &skip, Label::kNear);
|
| __ ret(0);
|
|
|
| // If we decide not to perform on-stack replacement we perform a
|
| // stack guard check to enable interrupts.
|
| __ bind(&stack_check);
|
| - NearLabel ok;
|
| + Label ok;
|
| ExternalReference stack_limit =
|
| ExternalReference::address_of_stack_limit(masm->isolate());
|
| __ cmp(esp, Operand::StaticVariable(stack_limit));
|
| - __ j(above_equal, &ok, taken);
|
| + __ j(above_equal, &ok, Label::kNear);
|
| StackCheckStub stub;
|
| __ TailCallStub(&stub);
|
| __ Abort("Unreachable code: returned from tail call.");
|
|
|