Index: src/mips/lithium-mips.cc |
diff --git a/src/mips/lithium-mips.cc b/src/mips/lithium-mips.cc |
index 2d2a413e897869a7ef97851785c6a817aed9a003..1c548fcdfac104588a4d39dd31516fa6a5f6dc99 100644 |
--- a/src/mips/lithium-mips.cc |
+++ b/src/mips/lithium-mips.cc |
@@ -297,6 +297,11 @@ void LUnaryMathOperation::PrintDataTo(StringStream* stream) { |
} |
+void LMathExp::PrintDataTo(StringStream* stream) { |
+ value()->PrintTo(stream); |
+} |
+ |
+ |
void LLoadContextSlot::PrintDataTo(StringStream* stream) { |
context()->PrintTo(stream); |
stream->Add("[%d]", slot_index()); |
@@ -1040,6 +1045,15 @@ LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) { |
LOperand* input = UseFixedDouble(instr->value(), f4); |
LUnaryMathOperation* result = new(zone()) LUnaryMathOperation(input, NULL); |
return MarkAsCall(DefineFixedDouble(result, f4), instr); |
+ } else if (op == kMathExp) { |
+ ASSERT(instr->representation().IsDouble()); |
+ ASSERT(instr->value()->representation().IsDouble()); |
+ LOperand* input = UseTempRegister(instr->value()); |
+ LOperand* temp1 = TempRegister(); |
+ LOperand* temp2 = TempRegister(); |
+ LOperand* double_temp = FixedTemp(f6); // Chosen by fair dice roll. |
+ LMathExp* result = new(zone()) LMathExp(input, double_temp, temp1, temp2); |
+ return DefineAsRegister(result); |
} else if (op == kMathPowHalf) { |
// Input cannot be the same as the result. |
// See lithium-codegen-mips.cc::DoMathPowHalf. |