diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc index 58f5636006..cca99a12b2 100644 --- a/src/x64/lithium-codegen-x64.cc +++ b/src/x64/lithium-codegen-x64.cc @@ -2613,7 +2613,7 @@ void LCodeGen::DoMathLog(LUnaryMathOperation* instr) { void LCodeGen::DoMathCos(LUnaryMathOperation* instr) { ASSERT(ToDoubleRegister(instr->result()).is(xmm1)); - TranscendentalCacheStub stub(TranscendentalCache::LOG, + TranscendentalCacheStub stub(TranscendentalCache::COS, TranscendentalCacheStub::UNTAGGED); CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); } @@ -2621,7 +2621,7 @@ void LCodeGen::DoMathCos(LUnaryMathOperation* instr) { void LCodeGen::DoMathSin(LUnaryMathOperation* instr) { ASSERT(ToDoubleRegister(instr->result()).is(xmm1)); - TranscendentalCacheStub stub(TranscendentalCache::LOG, + TranscendentalCacheStub stub(TranscendentalCache::SIN, TranscendentalCacheStub::UNTAGGED); CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); } diff --git a/test/mjsunit/sin-cos.js b/test/mjsunit/sin-cos.js index ae02451fac..0f1b8b6699 100644 --- a/test/mjsunit/sin-cos.js +++ b/test/mjsunit/sin-cos.js @@ -1,4 +1,4 @@ -// Copyright 2009 the V8 project authors. All rights reserved. +// Copyright 2011 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -27,19 +27,24 @@ // Test Math.sin and Math.cos. -var input_sin = [0, Math.PI / 2]; -var input_cos = [0, Math.PI]; +function sinTest() { + assertEquals(0, Math.sin(0)); + assertEquals(1, Math.sin(Math.PI / 2)); +} -var output_sin = input_sin.map(Math.sin); -var output_cos = input_cos.map(Math.cos); +function cosTest() { + assertEquals(0, Math.cos(1)); + assertEquals(-1, Math.cos(Math.PI)); +} -var expected_sin = [0, 1]; -var expected_cos = [1, -1]; - -assertArrayEquals(expected_sin, output_sin, "sine"); -assertArrayEquals(expected_cos, output_cos, "cosine"); +sinTest(); +cosTest(); // By accident, the slow case for sine and cosine were both sine at // some point. This is a regression test for that issue. var x = Math.pow(2, 70); assertTrue(Math.sin(x) != Math.cos(x)); + +// Ensure that sine and log are not the same. +x = 0.5; +assertTrue(Math.sin(x) != Math.log(x));