Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Side by Side Diff: src/base/platform/platform-win32.cc

Issue 2396433008: [wasm] Add guard regions to end of WebAssembly.Memory buffers (Closed)
Patch Set: Merging with master Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/base/platform/platform-posix.cc ('k') | src/compiler/wasm-compiler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Platform-specific code for Win32. 5 // Platform-specific code for Win32.
6 6
7 // Secure API functions are not available using MinGW with msvcrt.dll 7 // Secure API functions are not available using MinGW with msvcrt.dll
8 // on Windows XP. Make sure MINGW_HAS_SECURE_API is not defined to 8 // on Windows XP. Make sure MINGW_HAS_SECURE_API is not defined to
9 // disable definition of secure API functions in standard headers that 9 // disable definition of secure API functions in standard headers that
10 // would conflict with our own implementation. 10 // would conflict with our own implementation.
(...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 prot); 790 prot);
791 791
792 if (mbase == NULL) return NULL; 792 if (mbase == NULL) return NULL;
793 793
794 DCHECK((reinterpret_cast<uintptr_t>(mbase) % OS::AllocateAlignment()) == 0); 794 DCHECK((reinterpret_cast<uintptr_t>(mbase) % OS::AllocateAlignment()) == 0);
795 795
796 *allocated = msize; 796 *allocated = msize;
797 return mbase; 797 return mbase;
798 } 798 }
799 799
800 void* OS::AllocateGuarded(const size_t requested) {
801 return VirtualAlloc(nullptr, requested, MEM_RESERVE, PAGE_NOACCESS);
802 }
800 803
801 void OS::Free(void* address, const size_t size) { 804 void OS::Free(void* address, const size_t size) {
802 // TODO(1240712): VirtualFree has a return value which is ignored here. 805 // TODO(1240712): VirtualFree has a return value which is ignored here.
803 VirtualFree(address, 0, MEM_RELEASE); 806 VirtualFree(address, 0, MEM_RELEASE);
804 USE(size); 807 USE(size);
805 } 808 }
806 809
807 810
808 intptr_t OS::CommitPageSize() { 811 intptr_t OS::CommitPageSize() {
809 return 4096; 812 return 4096;
810 } 813 }
811 814
812 815
813 void OS::ProtectCode(void* address, const size_t size) { 816 void OS::ProtectCode(void* address, const size_t size) {
814 DWORD old_protect; 817 DWORD old_protect;
815 VirtualProtect(address, size, PAGE_EXECUTE_READ, &old_protect); 818 VirtualProtect(address, size, PAGE_EXECUTE_READ, &old_protect);
816 } 819 }
817 820
818 821
819 void OS::Guard(void* address, const size_t size) { 822 void OS::Guard(void* address, const size_t size) {
820 DWORD oldprotect; 823 DWORD oldprotect;
821 VirtualProtect(address, size, PAGE_NOACCESS, &oldprotect); 824 VirtualProtect(address, size, PAGE_NOACCESS, &oldprotect);
822 } 825 }
823 826
827 void OS::Unprotect(void* address, const size_t size) {
828 LPVOID result = VirtualAlloc(address, size, MEM_COMMIT, PAGE_READWRITE);
829 DCHECK_IMPLIES(result != nullptr, GetLastError() == 0);
830 }
824 831
825 void OS::Sleep(TimeDelta interval) { 832 void OS::Sleep(TimeDelta interval) {
826 ::Sleep(static_cast<DWORD>(interval.InMilliseconds())); 833 ::Sleep(static_cast<DWORD>(interval.InMilliseconds()));
827 } 834 }
828 835
829 836
830 void OS::Abort() { 837 void OS::Abort() {
831 if (g_hard_abort) { 838 if (g_hard_abort) {
832 V8_IMMEDIATE_CRASH(); 839 V8_IMMEDIATE_CRASH();
833 } 840 }
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after
1396 1403
1397 1404
1398 void Thread::SetThreadLocal(LocalStorageKey key, void* value) { 1405 void Thread::SetThreadLocal(LocalStorageKey key, void* value) {
1399 BOOL result = TlsSetValue(static_cast<DWORD>(key), value); 1406 BOOL result = TlsSetValue(static_cast<DWORD>(key), value);
1400 USE(result); 1407 USE(result);
1401 DCHECK(result); 1408 DCHECK(result);
1402 } 1409 }
1403 1410
1404 } // namespace base 1411 } // namespace base
1405 } // namespace v8 1412 } // namespace v8
OLDNEW
« no previous file with comments | « src/base/platform/platform-posix.cc ('k') | src/compiler/wasm-compiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698