diff options
author | Refael Ackermann <refack@gmail.com> | 2019-05-28 08:46:21 -0400 |
---|---|---|
committer | Refael Ackermann <refack@gmail.com> | 2019-06-01 09:55:12 -0400 |
commit | ed74896b1fae1c163b3906163f3bf46326618ddb (patch) | |
tree | 7fb05c5a19808e0c5cd95837528e9005999cf540 /deps/v8/src/base/platform/platform-posix.cc | |
parent | 2a850cd0664a4eee51f44d0bb8c2f7a3fe444154 (diff) | |
download | node-new-ed74896b1fae1c163b3906163f3bf46326618ddb.tar.gz |
deps: update V8 to 7.5.288.22
PR-URL: https://github.com/nodejs/node/pull/27375
Reviewed-By: Michaƫl Zasso <targos@protonmail.com>
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'deps/v8/src/base/platform/platform-posix.cc')
-rw-r--r-- | deps/v8/src/base/platform/platform-posix.cc | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/deps/v8/src/base/platform/platform-posix.cc b/deps/v8/src/base/platform/platform-posix.cc index 33a9371a92..2301c26688 100644 --- a/deps/v8/src/base/platform/platform-posix.cc +++ b/deps/v8/src/base/platform/platform-posix.cc @@ -43,7 +43,7 @@ #include "src/base/utils/random-number-generator.h" #ifdef V8_FAST_TLS_SUPPORTED -#include "src/base/atomicops.h" +#include <atomic> #endif #if V8_OS_MACOSX @@ -444,15 +444,22 @@ class PosixMemoryMappedFile final : public OS::MemoryMappedFile { // static -OS::MemoryMappedFile* OS::MemoryMappedFile::open(const char* name) { - if (FILE* file = fopen(name, "r+")) { +OS::MemoryMappedFile* OS::MemoryMappedFile::open(const char* name, + FileMode mode) { + const char* fopen_mode = (mode == FileMode::kReadOnly) ? "r" : "r+"; + if (FILE* file = fopen(name, fopen_mode)) { if (fseek(file, 0, SEEK_END) == 0) { long size = ftell(file); // NOLINT(runtime/int) if (size == 0) return new PosixMemoryMappedFile(file, nullptr, 0); if (size > 0) { + int prot = PROT_READ; + int flags = MAP_PRIVATE; + if (mode == FileMode::kReadWrite) { + prot |= PROT_WRITE; + flags = MAP_SHARED; + } void* const memory = - mmap(OS::GetRandomMmapAddr(), size, PROT_READ | PROT_WRITE, - MAP_SHARED, fileno(file), 0); + mmap(OS::GetRandomMmapAddr(), size, prot, flags, fileno(file), 0); if (memory != MAP_FAILED) { return new PosixMemoryMappedFile(file, memory, size); } @@ -463,7 +470,6 @@ OS::MemoryMappedFile* OS::MemoryMappedFile::open(const char* name) { return nullptr; } - // static OS::MemoryMappedFile* OS::MemoryMappedFile::create(const char* name, size_t size, void* initial) { @@ -815,7 +821,7 @@ static pthread_key_t LocalKeyToPthreadKey(Thread::LocalStorageKey local_key) { #ifdef V8_FAST_TLS_SUPPORTED -static Atomic32 tls_base_offset_initialized = 0; +static std::atomic<bool> tls_base_offset_initialized{false}; intptr_t kMacTlsBaseOffset = 0; // It's safe to do the initialization more that once, but it has to be @@ -851,7 +857,7 @@ static void InitializeTlsBaseOffset() { kMacTlsBaseOffset = 0; } - Release_Store(&tls_base_offset_initialized, 1); + tls_base_offset_initialized.store(true, std::memory_order_release); } @@ -871,7 +877,7 @@ static void CheckFastTls(Thread::LocalStorageKey key) { Thread::LocalStorageKey Thread::CreateThreadLocalKey() { #ifdef V8_FAST_TLS_SUPPORTED bool check_fast_tls = false; - if (tls_base_offset_initialized == 0) { + if (!tls_base_offset_initialized.load(std::memory_order_acquire)) { check_fast_tls = true; InitializeTlsBaseOffset(); } |