| Index: src/ia32/lithium-codegen-ia32.cc
|
| diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc
|
| index b5c0289174e7c94abf332dbc8a43726f9e8c47ce..dc0f5e90f98610650706336e7165eb7ba42b447f 100644
|
| --- a/src/ia32/lithium-codegen-ia32.cc
|
| +++ b/src/ia32/lithium-codegen-ia32.cc
|
| @@ -2174,67 +2174,6 @@ void LCodeGen::DoMathSqrt(LUnaryMathOperation* instr) {
|
| }
|
|
|
|
|
| -void LCodeGen::DoMathPowHalf(LUnaryMathOperation* instr) {
|
| - XMMRegister xmm_scratch = xmm0;
|
| - XMMRegister input_reg = ToDoubleRegister(instr->input());
|
| - ASSERT(ToDoubleRegister(instr->result()).is(input_reg));
|
| - ExternalReference negative_infinity =
|
| - ExternalReference::address_of_negative_infinity();
|
| - __ movdbl(xmm_scratch, Operand::StaticVariable(negative_infinity));
|
| - __ ucomisd(xmm_scratch, input_reg);
|
| - DeoptimizeIf(equal, instr->environment());
|
| - __ sqrtsd(input_reg, input_reg);
|
| -}
|
| -
|
| -
|
| -void LCodeGen::DoPower(LPower* instr) {
|
| - LOperand* left = instr->left();
|
| - LOperand* right = instr->right();
|
| - Representation exponent_type = instr->hydrogen()->right()->representation();
|
| - if (exponent_type.IsDouble()) {
|
| - // Pass two doubles as arguments on the stack.
|
| - __ PrepareCallCFunction(4, eax);
|
| - __ movdbl(Operand(esp, 0 * kDoubleSize), ToDoubleRegister(left));
|
| - __ movdbl(Operand(esp, 1 * kDoubleSize), ToDoubleRegister(right));
|
| - __ CallCFunction(ExternalReference::power_double_double_function(), 4);
|
| - } else if (exponent_type.IsInteger32()) {
|
| - __ PrepareCallCFunction(4, ebx);
|
| - __ movdbl(Operand(esp, 0 * kDoubleSize), ToDoubleRegister(left));
|
| - __ mov(Operand(esp, 1 * kDoubleSize), ToRegister(right));
|
| - __ CallCFunction(ExternalReference::power_double_int_function(), 4);
|
| - } else {
|
| - ASSERT(exponent_type.IsTagged());
|
| - __ PrepareCallCFunction(4, ebx);
|
| - __ movdbl(Operand(esp, 0 * kDoubleSize), ToDoubleRegister(left));
|
| - Register right_reg = ToRegister(right);
|
| - Label non_smi;
|
| - Label done;
|
| - __ test(right_reg, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &non_smi);
|
| - __ SmiUntag(right_reg);
|
| - __ mov(Operand(esp, 1 * kDoubleSize), ToRegister(right));
|
| - __ CallCFunction(ExternalReference::power_double_int_function(), 4);
|
| - __ jmp(&done);
|
| -
|
| - __ bind(&non_smi);
|
| - __ CmpObjectType(right_reg, HEAP_NUMBER_TYPE , ebx);
|
| - DeoptimizeIf(not_equal, instr->environment());
|
| - __ movdbl(xmm1, FieldOperand(right_reg, HeapNumber::kValueOffset));
|
| - __ movdbl(Operand(esp, 1 * kDoubleSize), xmm1);
|
| - __ CallCFunction(ExternalReference::power_double_double_function(), 4);
|
| -
|
| - __ bind(&done);
|
| - }
|
| -
|
| - // Return value is in st(0) on ia32.
|
| - // Store it into the (fixed) result register.
|
| - __ sub(Operand(esp), Immediate(kDoubleSize));
|
| - __ fstp_d(Operand(esp, 0));
|
| - __ movdbl(ToDoubleRegister(instr->result()), Operand(esp, 0));
|
| - __ add(Operand(esp), Immediate(kDoubleSize));
|
| -}
|
| -
|
| -
|
| void LCodeGen::DoUnaryMathOperation(LUnaryMathOperation* instr) {
|
| switch (instr->op()) {
|
| case kMathAbs:
|
| @@ -2249,9 +2188,6 @@ void LCodeGen::DoUnaryMathOperation(LUnaryMathOperation* instr) {
|
| case kMathSqrt:
|
| DoMathSqrt(instr);
|
| break;
|
| - case kMathPowHalf:
|
| - DoMathPowHalf(instr);
|
| - break;
|
| default:
|
| UNREACHABLE();
|
| }
|
|
|