You need to be able to control the permission bits on the pages, for example to mark them executable. This is not something you could do allocating off the heap. Also, VirtualAlloc allocates full pages on page boundaries (4k).
Why would you want to change it? On Tue, Jun 23, 2009 at 12:55 PM, AOF<[email protected]> wrote: > > Hello. > I have a question. > Can i replace the function "VirtualAlloc" to the function > "HeapAlloc"in the following code from v8? > If not, why? > > > > void* OS::Allocate(const size_t requested, > size_t* allocated, > bool executable) { > // VirtualAlloc rounds allocated size to page size automatically. > size_t msize = RoundUp(requested, GetPageSize()); > > // Windows XP SP2 allows Data Excution Prevention (DEP). > int prot = executable ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE; > LPVOID mbase = VirtualAlloc(NULL, msize, MEM_COMMIT | MEM_RESERVE, > prot); > if (mbase == NULL) { > LOG(StringEvent("OS::Allocate", "VirtualAlloc failed")); > return NULL; > } > > ASSERT(IsAligned(reinterpret_cast<size_t>(mbase), > OS::AllocateAlignment())); > > *allocated = msize; > UpdateAllocatedSpaceLimits(mbase, msize); > return mbase; > } > > > --~--~---------~--~----~------------~-------~--~----~ v8-users mailing list [email protected] http://groups.google.com/group/v8-users -~----------~----~----~----~------~----~------~--~---
