Index: src/ia32/lithium-ia32.cc |
diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc |
index 0175ca7249a9fe7c4b1a8a5a12b947895aa1869a..65a300edcd2fea15d20b081f81ec6d146a3e97ef 100644 |
--- a/src/ia32/lithium-ia32.cc |
+++ b/src/ia32/lithium-ia32.cc |
@@ -299,6 +299,11 @@ void LUnaryMathOperation::PrintDataTo(StringStream* stream) { |
} |
+void LMathExp::PrintDataTo(StringStream* stream) { |
+ value()->PrintTo(stream); |
+} |
+ |
+ |
void LMathPowHalf::PrintDataTo(StringStream* stream) { |
stream->Add("/pow_half "); |
value()->PrintTo(stream); |
@@ -1087,6 +1092,14 @@ LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) { |
LUnaryMathOperation* result = new(zone()) LUnaryMathOperation(context, |
input); |
return DefineSameAsFirst(result); |
+ } else if (op == kMathExp) { |
+ ASSERT(instr->representation().IsDouble()); |
+ ASSERT(instr->value()->representation().IsDouble()); |
+ LOperand* value = UseTempRegister(instr->value()); |
+ LOperand* temp1 = TempRegister(); |
+ LOperand* temp2 = TempRegister(); |
+ LMathExp* result = new(zone()) LMathExp(value, temp1, temp2); |
+ return DefineAsRegister(result); |
} else if (op == kMathSin || op == kMathCos || op == kMathTan) { |
LOperand* context = UseFixed(instr->context(), esi); |
LOperand* input = UseFixedDouble(instr->value(), xmm1); |