From: jochen@chromium.org Date: Wed, 2 Jul 2014 11:22:54 +0000 (+0000) Subject: Fix platform-cygwin.cc to really not use an Isolate X-Git-Tag: upstream/4.7.83~8424 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=128086642b43fc63b90ab870a02e1aa6c6556fec;p=platform%2Fupstream%2Fv8.git Fix platform-cygwin.cc to really not use an Isolate BUG=none R=jkummerow@chromium.org LOG=n Review URL: https://codereview.chromium.org/367953002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22152 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/base/platform/platform-cygwin.cc b/src/base/platform/platform-cygwin.cc index a351f13..b91e31b 100644 --- a/src/base/platform/platform-cygwin.cc +++ b/src/base/platform/platform-cygwin.cc @@ -179,41 +179,13 @@ void OS::SignalCodeMovingGC() { // This causes VirtualMemory::Commit to not always commit the memory region // specified. -static void* GetRandomAddr() { - Isolate* isolate = Isolate::UncheckedCurrent(); - // Note that the current isolate isn't set up in a call path via - // CpuFeatures::Probe. We don't care about randomization in this case because - // the code page is immediately freed. - if (isolate != NULL) { - // The address range used to randomize RWX allocations in OS::Allocate - // Try not to map pages into the default range that windows loads DLLs - // Use a multiple of 64k to prevent committing unused memory. - // Note: This does not guarantee RWX regions will be within the - // range kAllocationRandomAddressMin to kAllocationRandomAddressMax -#ifdef V8_HOST_ARCH_64_BIT - static const intptr_t kAllocationRandomAddressMin = 0x0000000080000000; - static const intptr_t kAllocationRandomAddressMax = 0x000003FFFFFF0000; -#else - static const intptr_t kAllocationRandomAddressMin = 0x04000000; - static const intptr_t kAllocationRandomAddressMax = 0x3FFF0000; -#endif - uintptr_t address = - (isolate->random_number_generator()->NextInt() << kPageSizeBits) | - kAllocationRandomAddressMin; - address &= kAllocationRandomAddressMax; - return reinterpret_cast(address); - } - return NULL; -} - - static void* RandomizedVirtualAlloc(size_t size, int action, int protection) { LPVOID base = NULL; if (protection == PAGE_EXECUTE_READWRITE || protection == PAGE_NOACCESS) { // For exectutable pages try and randomize the allocation address for (size_t attempts = 0; base == NULL && attempts < 3; ++attempts) { - base = VirtualAlloc(GetRandomAddr(), size, action, protection); + base = VirtualAlloc(OS::GetRandomMmapAddr(), size, action, protection); } }