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 |