Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index d375617adc1e32b4e4a7f415ce740a88eed1d928..03660f2b6ce358a59a58b914b27992230aeaf726 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -765,7 +765,8 @@ void LCodeGen::DoCallStub(LCallStub* instr) { |
} |
case CodeStub::TranscendentalCache: { |
__ ldr(r0, MemOperand(sp, 0)); |
- TranscendentalCacheStub stub(instr->transcendental_type()); |
+ TranscendentalCacheStub stub(instr->transcendental_type(), |
+ TranscendentalCacheStub::TAGGED); |
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
break; |
} |
@@ -2738,6 +2739,30 @@ void LCodeGen::DoPower(LPower* instr) { |
} |
+void LCodeGen::DoMathLog(LUnaryMathOperation* instr) { |
+ ASSERT(ToDoubleRegister(instr->result()).is(d2)); |
+ TranscendentalCacheStub stub(TranscendentalCache::LOG, |
+ TranscendentalCacheStub::UNTAGGED); |
+ CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
+} |
+ |
+ |
+void LCodeGen::DoMathCos(LUnaryMathOperation* instr) { |
+ ASSERT(ToDoubleRegister(instr->result()).is(d2)); |
+ TranscendentalCacheStub stub(TranscendentalCache::COS, |
+ TranscendentalCacheStub::UNTAGGED); |
+ CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
+} |
+ |
+ |
+void LCodeGen::DoMathSin(LUnaryMathOperation* instr) { |
+ ASSERT(ToDoubleRegister(instr->result()).is(d2)); |
+ TranscendentalCacheStub stub(TranscendentalCache::SIN, |
+ TranscendentalCacheStub::UNTAGGED); |
+ CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
+} |
+ |
+ |
void LCodeGen::DoUnaryMathOperation(LUnaryMathOperation* instr) { |
switch (instr->op()) { |
case kMathAbs: |
@@ -2752,6 +2777,15 @@ void LCodeGen::DoUnaryMathOperation(LUnaryMathOperation* instr) { |
case kMathSqrt: |
DoMathSqrt(instr); |
break; |
+ case kMathCos: |
+ DoMathCos(instr); |
+ break; |
+ case kMathSin: |
+ DoMathSin(instr); |
+ break; |
+ case kMathLog: |
+ DoMathLog(instr); |
+ break; |
default: |
Abort("Unimplemented type of LUnaryMathOperation."); |
UNREACHABLE(); |