OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 14 matching lines...) Expand all Loading... |
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 | 27 |
28 // Platform specific code for Win32. | 28 // Platform specific code for Win32. |
29 | 29 |
30 #define V8_WIN32_HEADERS_FULL | 30 #define V8_WIN32_HEADERS_FULL |
31 #include "win32-headers.h" | 31 #include "win32-headers.h" |
32 | 32 |
33 #include "v8.h" | 33 #include "v8.h" |
34 | 34 |
| 35 #include "codegen.h" |
35 #include "platform.h" | 36 #include "platform.h" |
36 #include "vm-state-inl.h" | 37 #include "vm-state-inl.h" |
37 | 38 |
38 #ifdef _MSC_VER | 39 #ifdef _MSC_VER |
39 | 40 |
40 // Case-insensitive bounded string comparisons. Use stricmp() on Win32. Usually | 41 // Case-insensitive bounded string comparisons. Use stricmp() on Win32. Usually |
41 // defined in strings.h. | 42 // defined in strings.h. |
42 int strncasecmp(const char* s1, const char* s2, int n) { | 43 int strncasecmp(const char* s1, const char* s2, int n) { |
43 return _strnicmp(s1, s2, n); | 44 return _strnicmp(s1, s2, n); |
44 } | 45 } |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 // dividend is a zero and divisor is nonzero finite => result equals dividend | 195 // dividend is a zero and divisor is nonzero finite => result equals dividend |
195 if (!(isfinite(x) && (!isfinite(y) && !isnan(y))) && | 196 if (!(isfinite(x) && (!isfinite(y) && !isnan(y))) && |
196 !(x == 0 && (y != 0 && isfinite(y)))) { | 197 !(x == 0 && (y != 0 && isfinite(y)))) { |
197 x = fmod(x, y); | 198 x = fmod(x, y); |
198 } | 199 } |
199 return x; | 200 return x; |
200 } | 201 } |
201 | 202 |
202 #endif // _WIN64 | 203 #endif // _WIN64 |
203 | 204 |
| 205 |
| 206 static Mutex* transcendental_function_mutex = OS::CreateMutex(); |
| 207 |
| 208 #define TRANSCENDENTAL_FUNCTION(name, type) \ |
| 209 static TranscendentalFunction fast_##name##_function = NULL; \ |
| 210 double fast_##name(double x) { \ |
| 211 if (fast_##name##_function == NULL) { \ |
| 212 ScopedLock lock(transcendental_function_mutex); \ |
| 213 TranscendentalFunction temp = \ |
| 214 CreateTranscendentalFunction(type); \ |
| 215 MemoryBarrier(); \ |
| 216 fast_##name##_function = temp; \ |
| 217 } \ |
| 218 return (*fast_##name##_function)(x); \ |
| 219 } |
| 220 |
| 221 TRANSCENDENTAL_FUNCTION(sin, TranscendentalCache::SIN) |
| 222 TRANSCENDENTAL_FUNCTION(cos, TranscendentalCache::COS) |
| 223 TRANSCENDENTAL_FUNCTION(tan, TranscendentalCache::TAN) |
| 224 TRANSCENDENTAL_FUNCTION(log, TranscendentalCache::LOG) |
| 225 |
| 226 #undef TRANSCENDENTAL_FUNCTION |
| 227 |
| 228 |
204 // ---------------------------------------------------------------------------- | 229 // ---------------------------------------------------------------------------- |
205 // The Time class represents time on win32. A timestamp is represented as | 230 // The Time class represents time on win32. A timestamp is represented as |
206 // a 64-bit integer in 100 nanoseconds since January 1, 1601 (UTC). JavaScript | 231 // a 64-bit integer in 100 nanoseconds since January 1, 1601 (UTC). JavaScript |
207 // timestamps are represented as a doubles in milliseconds since 00:00:00 UTC, | 232 // timestamps are represented as a doubles in milliseconds since 00:00:00 UTC, |
208 // January 1, 1970. | 233 // January 1, 1970. |
209 | 234 |
210 class Time { | 235 class Time { |
211 public: | 236 public: |
212 // Constructors. | 237 // Constructors. |
213 Time(); | 238 Time(); |
(...skipping 1854 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2068 | 2093 |
2069 | 2094 |
2070 void Sampler::Stop() { | 2095 void Sampler::Stop() { |
2071 ASSERT(IsActive()); | 2096 ASSERT(IsActive()); |
2072 SamplerThread::RemoveActiveSampler(this); | 2097 SamplerThread::RemoveActiveSampler(this); |
2073 SetActive(false); | 2098 SetActive(false); |
2074 } | 2099 } |
2075 | 2100 |
2076 | 2101 |
2077 } } // namespace v8::internal | 2102 } } // namespace v8::internal |
OLD | NEW |