| Index: src/platform-win32.cc
|
| diff --git a/src/platform-win32.cc b/src/platform-win32.cc
|
| index c50424e57a44a83733c2078b70691a5a50689304..7791d62aa37bceca3f893e765a67c032104a9ceb 100644
|
| --- a/src/platform-win32.cc
|
| +++ b/src/platform-win32.cc
|
| @@ -207,6 +207,12 @@ int strncpy_s(char* strDest, size_t numberOfElements,
|
| return 0;
|
| }
|
|
|
| +
|
| +inline void MemoryBarrier() {
|
| + int barrier = 0;
|
| + __asm__ __volatile__("xchgl %%eax,%0 ":"=r" (barrier));
|
| +}
|
| +
|
| #endif // __MINGW32__
|
|
|
| // Generate a pseudo-random number in the range 0-2^31-1. Usually
|
| @@ -858,13 +864,14 @@ void* OS::Allocate(const size_t requested,
|
|
|
| // VirtualAlloc rounds allocated size to page size automatically.
|
| size_t msize = RoundUp(requested, static_cast<int>(GetPageSize()));
|
| - intptr_t address = NULL;
|
| + intptr_t address = 0;
|
|
|
| // Windows XP SP2 allows Data Excution Prevention (DEP).
|
| int prot = is_executable ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE;
|
|
|
| // For exectutable pages try and randomize the allocation address
|
| - if (prot == PAGE_EXECUTE_READWRITE && msize >= Page::kPageSize) {
|
| + if (prot == PAGE_EXECUTE_READWRITE &&
|
| + msize >= static_cast<size_t>(Page::kPageSize)) {
|
| address = (V8::RandomPrivate() << kPageSizeBits)
|
| | kAllocationRandomAddressMin;
|
| address &= kAllocationRandomAddressMax;
|
| @@ -874,7 +881,7 @@ void* OS::Allocate(const size_t requested,
|
| msize,
|
| MEM_COMMIT | MEM_RESERVE,
|
| prot);
|
| - if (mbase == NULL && address != NULL)
|
| + if (mbase == NULL && address != 0)
|
| mbase = VirtualAlloc(NULL, msize, MEM_COMMIT | MEM_RESERVE, prot);
|
|
|
| if (mbase == NULL) {
|
| @@ -1347,6 +1354,7 @@ int OS::StackWalk(Vector<OS::StackFrame> frames) {
|
|
|
| #else // __MINGW32__
|
| void OS::LogSharedLibraryAddresses() { }
|
| +void OS::SignalCodeMovingGC() { }
|
| int OS::StackWalk(Vector<OS::StackFrame> frames) { return 0; }
|
| #endif // __MINGW32__
|
|
|
|
|