]>
git.saurik.com Git - apple/javascriptcore.git/blob - jit/ExecutableAllocatorWin.cpp
e38323c5fddd394628cd0d8fe6842a6c53c479c5
   2  * Copyright (C) 2008 Apple Inc. All rights reserved. 
   4  * Redistribution and use in source and binary forms, with or without 
   5  * modification, are permitted provided that the following conditions 
   7  * 1. Redistributions of source code must retain the above copyright 
   8  *    notice, this list of conditions and the following disclaimer. 
   9  * 2. Redistributions in binary form must reproduce the above copyright 
  10  *    notice, this list of conditions and the following disclaimer in the 
  11  *    documentation and/or other materials provided with the distribution. 
  13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 
  14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
  15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
  16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR 
  17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
  18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
  19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
  20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
  21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
  22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
  23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
  28 #include "ExecutableAllocator.h" 
  30 #if ENABLE(ASSEMBLER) && OS(WINDOWS) 
  36 void ExecutableAllocator::intializePageSize() 
  38     SYSTEM_INFO system_info
; 
  39     GetSystemInfo(&system_info
); 
  40     ExecutableAllocator::pageSize 
= system_info
.dwPageSize
; 
  43 ExecutablePool::Allocation 
ExecutablePool::systemAlloc(size_t n
) 
  45     void* allocation 
= VirtualAlloc(0, n
, MEM_COMMIT 
| MEM_RESERVE
, PAGE_EXECUTE_READWRITE
); 
  48     ExecutablePool::Allocation alloc 
= {reinterpret_cast<char*>(allocation
), n
}; 
  52 void ExecutablePool::systemRelease(const ExecutablePool::Allocation
& alloc
) 
  54     VirtualFree(alloc
.pages
, 0, MEM_RELEASE
);  
  57 #if ENABLE(ASSEMBLER_WX_EXCLUSIVE) 
  58 #error "ASSEMBLER_WX_EXCLUSIVE not yet suported on this platform." 
  63 #endif // HAVE(ASSEMBLER)