Index: src/ia32/lithium-codegen-ia32.cc |
=================================================================== |
--- src/ia32/lithium-codegen-ia32.cc (revision 6082) |
+++ src/ia32/lithium-codegen-ia32.cc (working copy) |
@@ -686,7 +686,8 @@ |
break; |
} |
case CodeStub::TranscendentalCache: { |
- TranscendentalCacheStub stub(instr->transcendental_type()); |
+ TranscendentalCacheStub stub(instr->transcendental_type(), |
+ TranscendentalCacheStub::TAGGED); |
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
break; |
} |
@@ -2314,11 +2315,28 @@ |
void LCodeGen::DoMathLog(LUnaryMathOperation* instr) { |
ASSERT(ToDoubleRegister(instr->result()).is(xmm1)); |
- TranscendentalCacheSSE2Stub stub(TranscendentalCache::LOG); |
+ TranscendentalCacheStub stub(TranscendentalCache::LOG, |
+ TranscendentalCacheStub::UNTAGGED); |
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
} |
+void LCodeGen::DoMathCos(LUnaryMathOperation* instr) { |
+ ASSERT(ToDoubleRegister(instr->result()).is(xmm1)); |
+ TranscendentalCacheStub stub(TranscendentalCache::COS, |
+ TranscendentalCacheStub::UNTAGGED); |
+ CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
+} |
+ |
+ |
+void LCodeGen::DoMathSin(LUnaryMathOperation* instr) { |
+ ASSERT(ToDoubleRegister(instr->result()).is(xmm1)); |
+ TranscendentalCacheStub stub(TranscendentalCache::SIN, |
+ TranscendentalCacheStub::UNTAGGED); |
+ CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); |
+} |
+ |
+ |
void LCodeGen::DoUnaryMathOperation(LUnaryMathOperation* instr) { |
switch (instr->op()) { |
case kMathAbs: |
@@ -2336,6 +2354,12 @@ |
case kMathPowHalf: |
DoMathPowHalf(instr); |
break; |
+ case kMathCos: |
+ DoMathCos(instr); |
+ break; |
+ case kMathSin: |
+ DoMathSin(instr); |
+ break; |
case kMathLog: |
DoMathLog(instr); |
break; |