From f2699b66cfaccb2c1383902946eacbb4be0f2ba4 Mon Sep 17 00:00:00 2001 From: "yangguo@chromium.org" Date: Fri, 2 Mar 2012 15:00:52 +0000 Subject: [PATCH] Revert r10908 due to flakiness and crashes. BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9580007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10909 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/arm/codegen-arm.cc | 13 ----- src/arm/lithium-arm.cc | 2 +- src/codegen.h | 9 ---- src/heap-inl.h | 9 ++-- src/hydrogen-instructions.h | 2 - src/hydrogen.cc | 2 - src/ia32/code-stubs-ia32.cc | 17 ++++--- src/ia32/code-stubs-ia32.h | 3 +- src/ia32/codegen-ia32.cc | 47 ------------------ src/ia32/lithium-ia32.cc | 2 +- src/mips/codegen-mips.cc | 13 ----- src/mips/lithium-mips.cc | 2 +- src/platform-nullos.cc | 24 ---------- src/platform-posix.cc | 24 ---------- src/platform-win32.cc | 25 ---------- src/platform.h | 6 --- src/x64/code-stubs-x64.cc | 17 ++++--- src/x64/code-stubs-x64.h | 3 +- src/x64/codegen-x64.cc | 46 ------------------ src/x64/lithium-x64.cc | 2 +- .../mjsunit/regress/regress-transcendental.js | 48 ------------------- 21 files changed, 26 insertions(+), 290 deletions(-) delete mode 100644 test/mjsunit/regress/regress-transcendental.js diff --git a/src/arm/codegen-arm.cc b/src/arm/codegen-arm.cc index 6e1827778..506f9b2d5 100644 --- a/src/arm/codegen-arm.cc +++ b/src/arm/codegen-arm.cc @@ -37,19 +37,6 @@ namespace internal { #define __ ACCESS_MASM(masm) -TranscendentalFunction CreateTranscendentalFunction( - TranscendentalCache::Type type) { - switch (type) { - case TranscendentalCache::SIN: return &sin; - case TranscendentalCache::COS: return &cos; - case TranscendentalCache::TAN: return &tan; - case TranscendentalCache::LOG: return &log; - default: UNIMPLEMENTED(); - } - return NULL; -} - - // ------------------------------------------------------------------------- // Platform-specific RuntimeCallHelper functions. diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc index 108a6de62..b747ab815 100644 --- a/src/arm/lithium-arm.cc +++ b/src/arm/lithium-arm.cc @@ -1170,7 +1170,7 @@ LInstruction* LChunkBuilder::DoInvokeFunction(HInvokeFunction* instr) { LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) { BuiltinFunctionId op = instr->op(); - if (op == kMathLog || op == kMathSin || op == kMathCos || op == kMathTan) { + if (op == kMathLog || op == kMathSin || op == kMathCos) { LOperand* input = UseFixedDouble(instr->value(), d2); LUnaryMathOperation* result = new(zone()) LUnaryMathOperation(input, NULL); return MarkAsCall(DefineFixedDouble(result, d2), instr); diff --git a/src/codegen.h b/src/codegen.h index 28a3006e1..5360d3ef3 100644 --- a/src/codegen.h +++ b/src/codegen.h @@ -84,15 +84,6 @@ enum TypeofState { INSIDE_TYPEOF, NOT_INSIDE_TYPEOF }; namespace v8 { namespace internal { -// Results of the library implementation of transcendental functions may differ -// from the one we use in our generated code. Therefore we use the same -// generated code both in runtime and compiled code. -typedef double (*TranscendentalFunction)(double x); - -TranscendentalFunction CreateTranscendentalFunction( - TranscendentalCache::Type type); - - class ElementsTransitionGenerator : public AllStatic { public: static void GenerateSmiOnlyToObject(MacroAssembler* masm); diff --git a/src/heap-inl.h b/src/heap-inl.h index 706d2886b..81ed448a1 100644 --- a/src/heap-inl.h +++ b/src/heap-inl.h @@ -32,7 +32,6 @@ #include "isolate.h" #include "list-inl.h" #include "objects.h" -#include "platform.h" #include "v8-counters.h" #include "store-buffer.h" #include "store-buffer-inl.h" @@ -659,15 +658,15 @@ double TranscendentalCache::SubCache::Calculate(double input) { case ATAN: return atan(input); case COS: - return fast_cos(input); + return cos(input); case EXP: return exp(input); case LOG: - return fast_log(input); + return log(input); case SIN: - return fast_sin(input); + return sin(input); case TAN: - return fast_tan(input); + return tan(input); default: return 0.0; // Never happens. } diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h index a05fc776f..eb0e0fd7d 100644 --- a/src/hydrogen-instructions.h +++ b/src/hydrogen-instructions.h @@ -1886,7 +1886,6 @@ class HUnaryMathOperation: public HTemplateInstruction<2> { case kMathLog: case kMathSin: case kMathCos: - case kMathTan: set_representation(Representation::Double()); break; default: @@ -1917,7 +1916,6 @@ class HUnaryMathOperation: public HTemplateInstruction<2> { case kMathLog: case kMathSin: case kMathCos: - case kMathTan: return Representation::Double(); case kMathAbs: return representation(); diff --git a/src/hydrogen.cc b/src/hydrogen.cc index 9c8338049..ccddd8869 100644 --- a/src/hydrogen.cc +++ b/src/hydrogen.cc @@ -5420,7 +5420,6 @@ bool HGraphBuilder::TryInlineBuiltinFunctionCall(Call* expr, bool drop_extra) { case kMathLog: case kMathSin: case kMathCos: - case kMathTan: if (expr->arguments()->length() == 1) { HValue* argument = Pop(); HValue* context = environment()->LookupContext(); @@ -5481,7 +5480,6 @@ bool HGraphBuilder::TryInlineBuiltinMethodCall(Call* expr, case kMathLog: case kMathSin: case kMathCos: - case kMathTan: if (argument_count == 2 && check_type == RECEIVER_MAP_CHECK) { AddCheckConstantFunction(expr, receiver, receiver_map, true); HValue* argument = Pop(); diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc index 5b6f6873c..b89cc14c6 100644 --- a/src/ia32/code-stubs-ia32.cc +++ b/src/ia32/code-stubs-ia32.cc @@ -2510,7 +2510,7 @@ void TranscendentalCacheStub::Generate(MacroAssembler* masm) { __ fld_d(Operand(esp, 0)); __ add(esp, Immediate(kDoubleSize)); } - GenerateOperation(masm, type_); + GenerateOperation(masm); __ mov(Operand(ecx, 0), ebx); __ mov(Operand(ecx, kIntSize), edx); __ mov(Operand(ecx, 2 * kIntSize), eax); @@ -2526,7 +2526,7 @@ void TranscendentalCacheStub::Generate(MacroAssembler* masm) { __ sub(esp, Immediate(kDoubleSize)); __ movdbl(Operand(esp, 0), xmm1); __ fld_d(Operand(esp, 0)); - GenerateOperation(masm, type_); + GenerateOperation(masm); __ fstp_d(Operand(esp, 0)); __ movdbl(xmm1, Operand(esp, 0)); __ add(esp, Immediate(kDoubleSize)); @@ -2578,15 +2578,14 @@ Runtime::FunctionId TranscendentalCacheStub::RuntimeFunction() { } -void TranscendentalCacheStub::GenerateOperation( - MacroAssembler* masm, TranscendentalCache::Type type) { +void TranscendentalCacheStub::GenerateOperation(MacroAssembler* masm) { // Only free register is edi. // Input value is on FP stack, and also in ebx/edx. // Input value is possibly in xmm1. // Address of result (a newly allocated HeapNumber) may be in eax. - if (type == TranscendentalCache::SIN || - type == TranscendentalCache::COS || - type == TranscendentalCache::TAN) { + if (type_ == TranscendentalCache::SIN || + type_ == TranscendentalCache::COS || + type_ == TranscendentalCache::TAN) { // Both fsin and fcos require arguments in the range +/-2^63 and // return NaN for infinities and NaN. They can share all code except // the actual fsin/fcos operation. @@ -2650,7 +2649,7 @@ void TranscendentalCacheStub::GenerateOperation( // FPU Stack: input % 2*pi __ bind(&in_range); - switch (type) { + switch (type_) { case TranscendentalCache::SIN: __ fsin(); break; @@ -2668,7 +2667,7 @@ void TranscendentalCacheStub::GenerateOperation( } __ bind(&done); } else { - ASSERT(type == TranscendentalCache::LOG); + ASSERT(type_ == TranscendentalCache::LOG); __ fldln2(); __ fxch(); __ fyl2x(); diff --git a/src/ia32/code-stubs-ia32.h b/src/ia32/code-stubs-ia32.h index 803a711de..4d23c3a17 100644 --- a/src/ia32/code-stubs-ia32.h +++ b/src/ia32/code-stubs-ia32.h @@ -49,8 +49,6 @@ class TranscendentalCacheStub: public CodeStub { ArgumentType argument_type) : type_(type), argument_type_(argument_type) {} void Generate(MacroAssembler* masm); - static void GenerateOperation(MacroAssembler* masm, - TranscendentalCache::Type type); private: TranscendentalCache::Type type_; ArgumentType argument_type_; @@ -58,6 +56,7 @@ class TranscendentalCacheStub: public CodeStub { Major MajorKey() { return TranscendentalCache; } int MinorKey() { return type_ | argument_type_; } Runtime::FunctionId RuntimeFunction(); + void GenerateOperation(MacroAssembler* masm); }; diff --git a/src/ia32/codegen-ia32.cc b/src/ia32/codegen-ia32.cc index e1f689e19..3e085a245 100644 --- a/src/ia32/codegen-ia32.cc +++ b/src/ia32/codegen-ia32.cc @@ -30,7 +30,6 @@ #if defined(V8_TARGET_ARCH_IA32) #include "codegen.h" -#include "heap.h" #include "macro-assembler.h" namespace v8 { @@ -56,52 +55,6 @@ void StubRuntimeCallHelper::AfterCall(MacroAssembler* masm) const { #define __ masm. - -TranscendentalFunction CreateTranscendentalFunction( - TranscendentalCache::Type type) { - size_t actual_size; - // Allocate buffer in executable space. - byte* buffer = static_cast(OS::Allocate(1 * KB, - &actual_size, - true)); - if (buffer == NULL) { - // Fallback to library function if function cannot be created. - switch (type) { - case TranscendentalCache::SIN: return &sin; - case TranscendentalCache::COS: return &cos; - case TranscendentalCache::TAN: return &tan; - case TranscendentalCache::LOG: return &log; - default: UNIMPLEMENTED(); - } - } - - MacroAssembler masm(NULL, buffer, static_cast(actual_size)); - // esp[1 * kPointerSize]: raw double input - // esp[0 * kPointerSize]: return address - // Move double input into registers. - __ fld_d(Operand(esp, kPointerSize)); - __ push(ebx); - __ push(edx); - __ push(edi); - __ mov(ebx, Operand(esp, kPointerSize)); - __ mov(edx, Operand(esp, 2* kPointerSize)); - TranscendentalCacheStub::GenerateOperation(&masm, type); - // The return value is expected to be on ST(0) of the FPU stack. - __ pop(edi); - __ pop(edx); - __ pop(ebx); - __ Ret(); - - CodeDesc desc; - masm.GetCode(&desc); - ASSERT(desc.reloc_size == 0); - - CPU::FlushICache(buffer, actual_size); - OS::ProtectCode(buffer, actual_size); - return FUNCTION_CAST(buffer); -} - - static void MemCopyWrapper(void* dest, const void* src, size_t size) { memcpy(dest, src, size); } diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc index 758701652..6db041319 100644 --- a/src/ia32/lithium-ia32.cc +++ b/src/ia32/lithium-ia32.cc @@ -1195,7 +1195,7 @@ LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) { LUnaryMathOperation* result = new(zone()) LUnaryMathOperation(context, input); return DefineSameAsFirst(result); - } else if (op == kMathSin || op == kMathCos || op == kMathTan) { + } else if (op == kMathSin || op == kMathCos) { LOperand* context = UseFixed(instr->context(), esi); LOperand* input = UseFixedDouble(instr->value(), xmm1); LUnaryMathOperation* result = new(zone()) LUnaryMathOperation(context, diff --git a/src/mips/codegen-mips.cc b/src/mips/codegen-mips.cc index 8cbb77195..d7bddaf12 100644 --- a/src/mips/codegen-mips.cc +++ b/src/mips/codegen-mips.cc @@ -37,19 +37,6 @@ namespace internal { #define __ ACCESS_MASM(masm) -TranscendentalFunction CreateTranscendentalFunction( - TranscendentalCache::Type type) { - switch (type) { - case TranscendentalCache::SIN: return &sin; - case TranscendentalCache::COS: return &cos; - case TranscendentalCache::TAN: return &tan; - case TranscendentalCache::LOG: return &log; - default: UNIMPLEMENTED(); - } - return NULL; -} - - // ------------------------------------------------------------------------- // Platform-specific RuntimeCallHelper functions. diff --git a/src/mips/lithium-mips.cc b/src/mips/lithium-mips.cc index 1c4e1da3f..ae07c1e45 100644 --- a/src/mips/lithium-mips.cc +++ b/src/mips/lithium-mips.cc @@ -1169,7 +1169,7 @@ LInstruction* LChunkBuilder::DoInvokeFunction(HInvokeFunction* instr) { LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) { BuiltinFunctionId op = instr->op(); - if (op == kMathLog || op == kMathSin || op == kMathCos || op == kMathTan) { + if (op == kMathLog || op == kMathSin || op == kMathCos) { LOperand* input = UseFixedDouble(instr->value(), f4); LUnaryMathOperation* result = new(zone()) LUnaryMathOperation(input, NULL); return MarkAsCall(DefineFixedDouble(result, f4), instr); diff --git a/src/platform-nullos.cc b/src/platform-nullos.cc index e05345c80..918327a98 100644 --- a/src/platform-nullos.cc +++ b/src/platform-nullos.cc @@ -55,30 +55,6 @@ double modulo(double x, double y) { } -double fast_sin(double x) { - UNIMPLEMENTED(); - return 0; -} - - -double fast_cos(double x) { - UNIMPLEMENTED(); - return 0; -} - - -double fast_tan(double x) { - UNIMPLEMENTED(); - return 0; -} - - -double fast_log(double x) { - UNIMPLEMENTED(); - return 0; -} - - // Initialize OS class early in the V8 startup. void OS::SetUp() { // Seed the random number generator. diff --git a/src/platform-posix.cc b/src/platform-posix.cc index 4543a66e8..34fd5c449 100644 --- a/src/platform-posix.cc +++ b/src/platform-posix.cc @@ -53,7 +53,6 @@ #include "v8.h" -#include "codegen.h" #include "platform.h" namespace v8 { @@ -127,29 +126,6 @@ double modulo(double x, double y) { } -static Mutex* transcendental_function_mutex = OS::CreateMutex(); - -#define TRANSCENDENTAL_FUNCTION(name, type) \ -static TranscendentalFunction fast_##name##_function = NULL; \ -double fast_##name(double x) { \ - if (fast_##name##_function == NULL) { \ - ScopedLock lock(transcendental_function_mutex); \ - TranscendentalFunction temp = \ - CreateTranscendentalFunction(type); \ - MemoryBarrier(); \ - fast_##name##_function = temp; \ - } \ - return (*fast_##name##_function)(x); \ -} - -TRANSCENDENTAL_FUNCTION(sin, TranscendentalCache::SIN) -TRANSCENDENTAL_FUNCTION(cos, TranscendentalCache::COS) -TRANSCENDENTAL_FUNCTION(tan, TranscendentalCache::TAN) -TRANSCENDENTAL_FUNCTION(log, TranscendentalCache::LOG) - -#undef TRANSCENDENTAL_FUNCTION - - double OS::nan_value() { // NAN from math.h is defined in C99 and not in POSIX. return NAN; diff --git a/src/platform-win32.cc b/src/platform-win32.cc index 224527add..e9e99246c 100644 --- a/src/platform-win32.cc +++ b/src/platform-win32.cc @@ -32,7 +32,6 @@ #include "v8.h" -#include "codegen.h" #include "platform.h" #include "vm-state-inl.h" @@ -202,30 +201,6 @@ double modulo(double x, double y) { #endif // _WIN64 - -static Mutex* transcendental_function_mutex = OS::CreateMutex(); - -#define TRANSCENDENTAL_FUNCTION(name, type) \ -static TranscendentalFunction fast_##name##_function = NULL; \ -double fast_##name(double x) { \ - if (fast_##name##_function == NULL) { \ - ScopedLock lock(transcendental_function_mutex); \ - TranscendentalFunction temp = \ - CreateTranscendentalFunction(type); \ - MemoryBarrier(); \ - fast_##name##_function = temp; \ - } \ - return (*fast_##name##_function)(x); \ -} - -TRANSCENDENTAL_FUNCTION(sin, TranscendentalCache::SIN) -TRANSCENDENTAL_FUNCTION(cos, TranscendentalCache::COS) -TRANSCENDENTAL_FUNCTION(tan, TranscendentalCache::TAN) -TRANSCENDENTAL_FUNCTION(log, TranscendentalCache::LOG) - -#undef TRANSCENDENTAL_FUNCTION - - // ---------------------------------------------------------------------------- // The Time class represents time on win32. A timestamp is represented as // a 64-bit integer in 100 nanoseconds since January 1, 1601 (UTC). JavaScript diff --git a/src/platform.h b/src/platform.h index ccb4109b2..38e633a38 100644 --- a/src/platform.h +++ b/src/platform.h @@ -96,12 +96,6 @@ class Mutex; double ceiling(double x); double modulo(double x, double y); -// Custom implementation of sin, cos, tan and log. -double fast_sin(double input); -double fast_cos(double input); -double fast_tan(double input); -double fast_log(double input); - // Forward declarations. class Socket; diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc index 307ade433..982639e9a 100644 --- a/src/x64/code-stubs-x64.cc +++ b/src/x64/code-stubs-x64.cc @@ -1628,7 +1628,7 @@ void TranscendentalCacheStub::Generate(MacroAssembler* masm) { __ movsd(FieldOperand(rax, HeapNumber::kValueOffset), xmm1); __ fld_d(FieldOperand(rax, HeapNumber::kValueOffset)); } - GenerateOperation(masm, type_); + GenerateOperation(masm); __ movq(Operand(rcx, 0), rbx); __ movq(Operand(rcx, 2 * kIntSize), rax); __ fstp_d(FieldOperand(rax, HeapNumber::kValueOffset)); @@ -1643,7 +1643,7 @@ void TranscendentalCacheStub::Generate(MacroAssembler* masm) { __ subq(rsp, Immediate(kDoubleSize)); __ movsd(Operand(rsp, 0), xmm1); __ fld_d(Operand(rsp, 0)); - GenerateOperation(masm, type_); + GenerateOperation(masm); __ fstp_d(Operand(rsp, 0)); __ movsd(xmm1, Operand(rsp, 0)); __ addq(rsp, Immediate(kDoubleSize)); @@ -1695,17 +1695,16 @@ Runtime::FunctionId TranscendentalCacheStub::RuntimeFunction() { } -void TranscendentalCacheStub::GenerateOperation( - MacroAssembler* masm, TranscendentalCache::Type type) { +void TranscendentalCacheStub::GenerateOperation(MacroAssembler* masm) { // Registers: // rax: Newly allocated HeapNumber, which must be preserved. // rbx: Bits of input double. Must be preserved. // rcx: Pointer to cache entry. Must be preserved. // st(0): Input double Label done; - if (type == TranscendentalCache::SIN || - type == TranscendentalCache::COS || - type == TranscendentalCache::TAN) { + if (type_ == TranscendentalCache::SIN || + type_ == TranscendentalCache::COS || + type_ == TranscendentalCache::TAN) { // Both fsin and fcos require arguments in the range +/-2^63 and // return NaN for infinities and NaN. They can share all code except // the actual fsin/fcos operation. @@ -1768,7 +1767,7 @@ void TranscendentalCacheStub::GenerateOperation( // FPU Stack: input % 2*pi __ movq(rax, rdi); // Restore rax, pointer to the new HeapNumber. __ bind(&in_range); - switch (type) { + switch (type_) { case TranscendentalCache::SIN: __ fsin(); break; @@ -1786,7 +1785,7 @@ void TranscendentalCacheStub::GenerateOperation( } __ bind(&done); } else { - ASSERT(type == TranscendentalCache::LOG); + ASSERT(type_ == TranscendentalCache::LOG); __ fldln2(); __ fxch(); __ fyl2x(); diff --git a/src/x64/code-stubs-x64.h b/src/x64/code-stubs-x64.h index 6a1a18f83..30ef3e8c5 100644 --- a/src/x64/code-stubs-x64.h +++ b/src/x64/code-stubs-x64.h @@ -48,8 +48,6 @@ class TranscendentalCacheStub: public CodeStub { ArgumentType argument_type) : type_(type), argument_type_(argument_type) {} void Generate(MacroAssembler* masm); - static void GenerateOperation(MacroAssembler* masm, - TranscendentalCache::Type type); private: TranscendentalCache::Type type_; ArgumentType argument_type_; @@ -57,6 +55,7 @@ class TranscendentalCacheStub: public CodeStub { Major MajorKey() { return TranscendentalCache; } int MinorKey() { return type_ | argument_type_; } Runtime::FunctionId RuntimeFunction(); + void GenerateOperation(MacroAssembler* masm); }; diff --git a/src/x64/codegen-x64.cc b/src/x64/codegen-x64.cc index 2584889f0..8947f7005 100644 --- a/src/x64/codegen-x64.cc +++ b/src/x64/codegen-x64.cc @@ -54,52 +54,6 @@ void StubRuntimeCallHelper::AfterCall(MacroAssembler* masm) const { #define __ masm. - -TranscendentalFunction CreateTranscendentalFunction( - TranscendentalCache::Type type) { - size_t actual_size; - // Allocate buffer in executable space. - byte* buffer = static_cast(OS::Allocate(1 * KB, - &actual_size, - true)); - if (buffer == NULL) { - // Fallback to library function if function cannot be created. - switch (type) { - case TranscendentalCache::SIN: return &sin; - case TranscendentalCache::COS: return &cos; - case TranscendentalCache::TAN: return &tan; - case TranscendentalCache::LOG: return &log; - default: UNIMPLEMENTED(); - } - } - - MacroAssembler masm(NULL, buffer, static_cast(actual_size)); - // xmm0: raw double input. - // Move double input into registers. - __ push(rbx); - __ push(rdi); - __ movq(rbx, xmm0); - __ push(rbx); - __ fld_d(Operand(rsp, 0)); - TranscendentalCacheStub::GenerateOperation(&masm, type); - // The return value is expected to be in xmm0. - __ fstp_d(Operand(rsp, 0)); - __ pop(rbx); - __ movq(xmm0, rbx); - __ pop(rdi); - __ pop(rbx); - __ Ret(); - - CodeDesc desc; - masm.GetCode(&desc); - ASSERT(desc.reloc_size == 0); - - CPU::FlushICache(buffer, actual_size); - OS::ProtectCode(buffer, actual_size); - return FUNCTION_CAST(buffer); -} - - #ifdef _WIN64 typedef double (*ModuloFunction)(double, double); // Define custom fmod implementation. diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc index 79ca5f59e..19bb58ae6 100644 --- a/src/x64/lithium-x64.cc +++ b/src/x64/lithium-x64.cc @@ -1163,7 +1163,7 @@ LInstruction* LChunkBuilder::DoInvokeFunction(HInvokeFunction* instr) { LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) { BuiltinFunctionId op = instr->op(); - if (op == kMathLog || op == kMathSin || op == kMathCos || op == kMathTan) { + if (op == kMathLog || op == kMathSin || op == kMathCos) { LOperand* input = UseFixedDouble(instr->value(), xmm1); LUnaryMathOperation* result = new(zone()) LUnaryMathOperation(input); return MarkAsCall(DefineFixedDouble(result, xmm1), instr); diff --git a/test/mjsunit/regress/regress-transcendental.js b/test/mjsunit/regress/regress-transcendental.js deleted file mode 100644 index acaf11cf1..000000000 --- a/test/mjsunit/regress/regress-transcendental.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2012 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-gc - -// Test whether the runtime implementation and generated code of -// sine and tangens return the same results. - -function test(f, x, name) { - // Reset transcendental cache. - gc(); - // Initializing cache leads to a runtime call. - var runtime_result = f(x); - // Flush transcendental cache. - for (var i = 0; i < 100000; i++) f(i); - // Calculate using generated code. - var gencode_result = f(x); - print(name + " runtime function: " + runtime_result); - print(name + " generated code : " + gencode_result); - assertEquals(gencode_result, runtime_result); -} - -test(Math.tan, -1.57079632679489660000, "Math.tan"); -test(Math.sin, 6.283185307179586, "Math.sin"); -- 2.34.1