@nxtedition/shared
Advanced tools
+2
-2
| { | ||
| "name": "@nxtedition/shared", | ||
| "description": "Cross-thread primitives for Node.js worker threads", | ||
| "version": "5.1.7", | ||
| "version": "5.1.8", | ||
| "type": "module", | ||
@@ -49,3 +49,3 @@ "main": "lib/index.js", | ||
| }, | ||
| "gitHead": "7c9c7457c885c644c7a1e70ef894d4727ce240d6" | ||
| "gitHead": "ae8f780ca3c218e59b0f261796c209ed0afc5477" | ||
| } |
+65
-67
@@ -74,6 +74,6 @@ #ifdef __linux__ | ||
| // Reserve a contiguous 2*size placeholder, then split it into two halves. | ||
| void *addr = VirtualAlloc2(nullptr, nullptr, size * 2, MEM_RESERVE | MEM_RESERVE_PLACEHOLDER, | ||
| PAGE_NOACCESS, nullptr, 0); | ||
| void *addr = VirtualAlloc2(NULL, NULL, size * 2, MEM_RESERVE | MEM_RESERVE_PLACEHOLDER, | ||
| PAGE_NOACCESS, NULL, 0); | ||
| if (!addr) | ||
| return nullptr; | ||
| return NULL; | ||
@@ -83,7 +83,7 @@ if (!VirtualFree(addr, size, MEM_RELEASE | MEM_PRESERVE_PLACEHOLDER)) | ||
| VirtualFree(addr, 0, MEM_RELEASE); | ||
| return nullptr; | ||
| return NULL; | ||
| } | ||
| HANDLE mapping = CreateFileMapping(INVALID_HANDLE_VALUE, nullptr, PAGE_READWRITE, | ||
| (DWORD)(size >> 32), (DWORD)(size & 0xFFFFFFFF), nullptr); | ||
| HANDLE mapping = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, | ||
| (DWORD)(size >> 32), (DWORD)(size & 0xFFFFFFFF), NULL); | ||
| if (!mapping) | ||
@@ -94,8 +94,8 @@ { | ||
| VirtualFree((char *)addr + size, 0, MEM_RELEASE); | ||
| return nullptr; | ||
| return NULL; | ||
| } | ||
| // Map the same section into both placeholders. | ||
| void *v1 = MapViewOfFile3(mapping, nullptr, addr, 0, size, MEM_REPLACE_PLACEHOLDER, | ||
| PAGE_READWRITE, nullptr, 0); | ||
| void *v1 = MapViewOfFile3(mapping, NULL, addr, 0, size, MEM_REPLACE_PLACEHOLDER, PAGE_READWRITE, | ||
| NULL, 0); | ||
| if (!v1) | ||
@@ -106,7 +106,7 @@ { | ||
| VirtualFree((char *)addr + size, 0, MEM_RELEASE); | ||
| return nullptr; | ||
| return NULL; | ||
| } | ||
| void *v2 = MapViewOfFile3(mapping, nullptr, (char *)addr + size, 0, size, MEM_REPLACE_PLACEHOLDER, | ||
| PAGE_READWRITE, nullptr, 0); | ||
| void *v2 = MapViewOfFile3(mapping, NULL, (char *)addr + size, 0, size, MEM_REPLACE_PLACEHOLDER, | ||
| PAGE_READWRITE, NULL, 0); | ||
| if (!v2) | ||
@@ -118,3 +118,3 @@ { | ||
| CloseHandle(mapping); | ||
| return nullptr; | ||
| return NULL; | ||
| } | ||
@@ -130,3 +130,3 @@ | ||
| CloseHandle(mapping); | ||
| return nullptr; | ||
| return NULL; | ||
| } | ||
@@ -234,8 +234,7 @@ | ||
| // spurious failures when the huge-page pool is exhausted. | ||
| void *addr = | ||
| mmap(nullptr, size * 2, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0); | ||
| void *addr = mmap(NULL, size * 2, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0); | ||
| if (addr == MAP_FAILED) | ||
| { | ||
| close(fd); | ||
| return nullptr; | ||
| return NULL; | ||
| } | ||
@@ -246,3 +245,3 @@ | ||
| int flags = MAP_FIXED | MAP_SHARED; | ||
| #ifdef __linux__ | ||
| #if defined(__linux__) && defined(MAP_HUGE_2MB) && defined(MAP_HUGETLB) | ||
| // MAP_HUGETLB | MAP_HUGE_2MB: use explicit 2 MiB huge-page backing. | ||
@@ -259,3 +258,3 @@ if (huge_pages) | ||
| close(fd); | ||
| return nullptr; | ||
| return NULL; | ||
| } | ||
@@ -277,3 +276,3 @@ | ||
| munmap(addr, size * 2); | ||
| return nullptr; | ||
| return NULL; | ||
| } | ||
@@ -316,3 +315,3 @@ | ||
| if (fd < 0) | ||
| return nullptr; | ||
| return NULL; | ||
@@ -402,5 +401,5 @@ ring_buf_t *rb = ring_buf_alloc_from_fd(fd, size, false); | ||
| { | ||
| uint64_t h = fmix64(static_cast<uint64_t>(p)); | ||
| s[PTR_CHECK_INDEX + 0] = static_cast<uint32_t>(h); | ||
| s[PTR_CHECK_INDEX + 1] = static_cast<uint32_t>(h >> 32); | ||
| uint64_t h = fmix64((uint64_t)p); | ||
| s[PTR_CHECK_INDEX + 0] = (uint32_t)h; | ||
| s[PTR_CHECK_INDEX + 1] = (uint32_t)(h >> 32); | ||
| } | ||
@@ -411,5 +410,4 @@ | ||
| { | ||
| uint64_t h = fmix64(static_cast<uint64_t>(p)); | ||
| return s[PTR_CHECK_INDEX + 0] == static_cast<uint32_t>(h) && | ||
| s[PTR_CHECK_INDEX + 1] == static_cast<uint32_t>(h >> 32); | ||
| uint64_t h = fmix64((uint64_t)p); | ||
| return s[PTR_CHECK_INDEX + 0] == (uint32_t)h && s[PTR_CHECK_INDEX + 1] == (uint32_t)(h >> 32); | ||
| } | ||
@@ -420,3 +418,3 @@ | ||
| // Reads and validates ring_buf_t* from a SharedArrayBuffer created by | ||
| // ring_alloc. Returns nullptr and throws a TypeError on failure. | ||
| // ring_alloc. Returns NULL and throws a TypeError on failure. | ||
| static ring_buf_t *rb_from_handle(napi_env env, napi_value val, const char *ctx) | ||
@@ -430,7 +428,7 @@ { | ||
| snprintf(msg, sizeof(msg), "%s: expected SharedArrayBuffer handle", ctx); | ||
| napi_throw_type_error(env, nullptr, msg); | ||
| return nullptr; | ||
| napi_throw_type_error(env, NULL, msg); | ||
| return NULL; | ||
| } | ||
| void *data = nullptr; | ||
| void *data = NULL; | ||
| size_t len = 0; | ||
@@ -443,7 +441,7 @@ napi_get_arraybuffer_info(env, val, &data, &len); | ||
| snprintf(msg, sizeof(msg), "%s: invalid handle (size)", ctx); | ||
| napi_throw_type_error(env, nullptr, msg); | ||
| return nullptr; | ||
| napi_throw_type_error(env, NULL, msg); | ||
| return NULL; | ||
| } | ||
| const uint32_t *s = static_cast<const uint32_t *>(data); | ||
| const uint32_t *s = (const uint32_t *)data; | ||
| if (s[MAGIC1_INDEX] != MAGIC1 || s[MAGIC2_INDEX] != MAGIC2) | ||
@@ -453,4 +451,4 @@ { | ||
| snprintf(msg, sizeof(msg), "%s: invalid handle (magic)", ctx); | ||
| napi_throw_type_error(env, nullptr, msg); | ||
| return nullptr; | ||
| napi_throw_type_error(env, NULL, msg); | ||
| return NULL; | ||
| } | ||
@@ -460,3 +458,3 @@ | ||
| uint64_t hi = s[PTR_HI_INDEX]; | ||
| uintptr_t p = static_cast<uintptr_t>((hi << 32) | lo); | ||
| uintptr_t p = (uintptr_t)((hi << 32) | lo); | ||
@@ -467,7 +465,7 @@ if (!ptr_check_valid(s, p)) | ||
| snprintf(msg, sizeof(msg), "%s: invalid handle (checksum)", ctx); | ||
| napi_throw_type_error(env, nullptr, msg); | ||
| return nullptr; | ||
| napi_throw_type_error(env, NULL, msg); | ||
| return NULL; | ||
| } | ||
| return reinterpret_cast<ring_buf_t *>(p); | ||
| return (ring_buf_t *)p; | ||
| } | ||
@@ -482,3 +480,3 @@ | ||
| { | ||
| ring_buf_release(static_cast<ring_buf_t *>(finalize_hint)); | ||
| ring_buf_release((ring_buf_t *)finalize_hint); | ||
| } | ||
@@ -502,8 +500,8 @@ | ||
| napi_value args[1]; | ||
| napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); | ||
| napi_get_cb_info(env, info, &argc, args, NULL, NULL); | ||
| if (argc < 1) | ||
| { | ||
| napi_throw_type_error(env, nullptr, "ring_alloc: size must be a positive integer"); | ||
| return nullptr; | ||
| napi_throw_type_error(env, NULL, "ring_alloc: size must be a positive integer"); | ||
| return NULL; | ||
| } | ||
@@ -515,4 +513,4 @@ | ||
| { | ||
| napi_throw_type_error(env, nullptr, "ring_alloc: size must be a positive integer"); | ||
| return nullptr; | ||
| napi_throw_type_error(env, NULL, "ring_alloc: size must be a positive integer"); | ||
| return NULL; | ||
| } | ||
@@ -524,4 +522,4 @@ | ||
| { | ||
| napi_throw_range_error(env, nullptr, "ring_alloc: size must be positive"); | ||
| return nullptr; | ||
| napi_throw_range_error(env, NULL, "ring_alloc: size must be positive"); | ||
| return NULL; | ||
| } | ||
@@ -533,7 +531,7 @@ | ||
| char msg[128]; | ||
| napi_throw_error(env, nullptr, ring_buf_errmsg(msg, sizeof(msg))); | ||
| return nullptr; | ||
| napi_throw_error(env, NULL, ring_buf_errmsg(msg, sizeof(msg))); | ||
| return NULL; | ||
| } | ||
| void *state_data = nullptr; | ||
| void *state_data = NULL; | ||
| napi_value sab; | ||
@@ -543,12 +541,12 @@ if (node_api_create_sharedarraybuffer(env, STATE_BYTES, &state_data, &sab) != napi_ok) | ||
| ring_buf_free(rb); | ||
| napi_throw_error(env, nullptr, "ring_alloc: failed to create SharedArrayBuffer"); | ||
| return nullptr; | ||
| napi_throw_error(env, NULL, "ring_alloc: failed to create SharedArrayBuffer"); | ||
| return NULL; | ||
| } | ||
| uint32_t *s = static_cast<uint32_t *>(state_data); | ||
| uint32_t *s = (uint32_t *)state_data; | ||
| s[MAGIC1_INDEX] = MAGIC1; | ||
| s[MAGIC2_INDEX] = MAGIC2; | ||
| uintptr_t p = reinterpret_cast<uintptr_t>(rb); | ||
| s[PTR_LO_INDEX] = static_cast<uint32_t>(p & 0xFFFFFFFFu); | ||
| s[PTR_HI_INDEX] = static_cast<uint32_t>(static_cast<uint64_t>(p) >> 32); | ||
| uintptr_t p = (uintptr_t)rb; | ||
| s[PTR_LO_INDEX] = (uint32_t)(p & 0xFFFFFFFFu); | ||
| s[PTR_HI_INDEX] = (uint32_t)((uint64_t)p >> 32); | ||
| ptr_check_write(s, p); | ||
@@ -568,8 +566,8 @@ | ||
| napi_value args[1]; | ||
| napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); | ||
| napi_get_cb_info(env, info, &argc, args, NULL, NULL); | ||
| if (argc < 1) | ||
| { | ||
| napi_throw_type_error(env, nullptr, "ring_get_array_buffer: expected 1 argument"); | ||
| return nullptr; | ||
| napi_throw_type_error(env, NULL, "ring_get_array_buffer: expected 1 argument"); | ||
| return NULL; | ||
| } | ||
@@ -579,3 +577,3 @@ | ||
| if (!rb) | ||
| return nullptr; | ||
| return NULL; | ||
@@ -589,4 +587,4 @@ ring_buf_acquire(rb); | ||
| ring_buf_release(rb); | ||
| napi_throw_error(env, nullptr, "ring_get_array_buffer: failed to create ArrayBuffer"); | ||
| return nullptr; | ||
| napi_throw_error(env, NULL, "ring_get_array_buffer: failed to create ArrayBuffer"); | ||
| return NULL; | ||
| } | ||
@@ -616,11 +614,11 @@ | ||
| napi_create_function(env, "ring_alloc", NAPI_AUTO_LENGTH, ring_alloc, nullptr, &fn); | ||
| napi_create_function(env, "ring_alloc", NAPI_AUTO_LENGTH, ring_alloc, NULL, &fn); | ||
| napi_set_named_property(env, exports, "ring_alloc", fn); | ||
| napi_create_function(env, "ring_get_array_buffer", NAPI_AUTO_LENGTH, ring_get_array_buffer, | ||
| nullptr, &fn); | ||
| napi_create_function(env, "ring_get_array_buffer", NAPI_AUTO_LENGTH, ring_get_array_buffer, NULL, | ||
| &fn); | ||
| napi_set_named_property(env, exports, "ring_get_array_buffer", fn); | ||
| napi_create_function(env, "ring_is_int32_lock_free", NAPI_AUTO_LENGTH, ring_is_int32_lock_free, | ||
| nullptr, &fn); | ||
| NULL, &fn); | ||
| napi_set_named_property(env, exports, "ring_is_int32_lock_free", fn); | ||
@@ -627,0 +625,0 @@ |
94425
-0.33%