| Index: src/platform-win32.cc
|
| diff --git a/src/platform-win32.cc b/src/platform-win32.cc
|
| index 600962e2d152828cde066c31f485deabb022eafc..80bcaf92afdde9355cf2cbb554e375fd623b2a7d 100644
|
| --- a/src/platform-win32.cc
|
| +++ b/src/platform-win32.cc
|
| @@ -147,11 +147,12 @@ double ceiling(double x) {
|
|
|
| static Mutex* limit_mutex = NULL;
|
|
|
| -#if defined(V8_TARGET_ARCH_IA32)
|
| +#if V8_TARGET_ARCH_IA32
|
| static void MemMoveWrapper(void* dest, const void* src, size_t size) {
|
| memmove(dest, src, size);
|
| }
|
|
|
| +
|
| // Initialize to library version so we can call this at any time during startup.
|
| static OS::MemMoveFunction memmove_function = &MemMoveWrapper;
|
|
|
| @@ -178,6 +179,7 @@ void init_modulo_function() {
|
| modulo_function = CreateModuloFunction();
|
| }
|
|
|
| +
|
| double modulo(double x, double y) {
|
| // Note: here we rely on dependent reads being ordered. This is true
|
| // on all architectures we currently support.
|
| @@ -321,6 +323,7 @@ class Time {
|
| TimeStamp time_;
|
| };
|
|
|
| +
|
| // Static variables.
|
| bool Time::tz_initialized_ = false;
|
| TIME_ZONE_INFORMATION Time::tzinfo_;
|
| @@ -580,7 +583,7 @@ void OS::PostSetUp() {
|
| // Math functions depend on CPU features therefore they are initialized after
|
| // CPU.
|
| MathSetup();
|
| -#if defined(V8_TARGET_ARCH_IA32)
|
| +#if V8_TARGET_ARCH_IA32
|
| OS::MemMoveFunction generated_memmove = CreateMemMoveFunction();
|
| if (generated_memmove != NULL) {
|
| memmove_function = generated_memmove;
|
| @@ -616,6 +619,7 @@ double OS::TimeCurrentMillis() {
|
| return t.ToJSTime();
|
| }
|
|
|
| +
|
| // Returns the tickcounter based on timeGetTime.
|
| int64_t OS::Ticks() {
|
| return timeGetTime() * 1000; // Convert to microseconds.
|
| @@ -1449,6 +1453,7 @@ int OS::StackWalk(Vector<OS::StackFrame> frames) {
|
| return frames_count;
|
| }
|
|
|
| +
|
| // Restore warnings to previous settings.
|
| #pragma warning(pop)
|
|
|
| @@ -1479,6 +1484,10 @@ double OS::nan_value() {
|
| int OS::ActivationFrameAlignment() {
|
| #ifdef _WIN64
|
| return 16; // Windows 64-bit ABI requires the stack to be 16-byte aligned.
|
| +#elif defined(__MINGW32__)
|
| + // With gcc 4.4 the tree vectorization optimizer can generate code
|
| + // that requires 16 byte alignment such as movdqa on x86.
|
| + return 16;
|
| #else
|
| return 8; // Floating-point math runs faster with 8-byte alignment.
|
| #endif
|
|
|