Revert "Replace NativeString heap allocations with thread-local pool allocator (#1263)"

This reverts commit 3e2ea85f5a.

Co-authored-by: uNetworkingAB <110806833+uNetworkingAB@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-04-02 23:06:29 +00:00
committed by GitHub
parent 1daeac50c1
commit f5876a7bc6
6 changed files with 75 additions and 124 deletions

View File

@@ -37,8 +37,7 @@ void uWS_App_ws(const FunctionCallbackInfo<Value> &args) {
/* This one is default constructed with defaults */
typename APP::template WebSocketBehavior<PerSocketData> behavior = {};
NativeStringContext nativeStringContext;
NativeString pattern(nativeStringContext, args.GetIsolate(), args[0]);
NativeString pattern(args.GetIsolate(), args[0]);
if (pattern.isInvalid(args)) {
return;
}
@@ -314,9 +313,8 @@ template <typename APP, typename F>
void uWS_App_get(F f, const FunctionCallbackInfo<Value> &args) {
APP *app = (APP *) args.This()->GetAlignedPointerFromInternalField(0);
NativeStringContext nativeStringContext;
/* Pattern */
NativeString pattern(nativeStringContext, args.GetIsolate(), args[0]);
NativeString pattern(args.GetIsolate(), args[0]);
if (pattern.isInvalid(args)) {
return;
}
@@ -330,7 +328,7 @@ void uWS_App_get(F f, const FunctionCallbackInfo<Value> &args) {
/* If the handler is String */
if (args[1]->IsArrayBuffer()) {
NativeString constantString(nativeStringContext, args.GetIsolate(), args[1]);
NativeString constantString(args.GetIsolate(), args[1]);
if (constantString.isInvalid(args)) {
return;
}
@@ -515,8 +513,7 @@ void uWS_App_listen_unix(const FunctionCallbackInfo<Value> &args) {
/* Path is last */
std::string path;
NativeStringContext nativeStringContext;
NativeString h(nativeStringContext, isolate, args[args.Length() - 1]);
NativeString h(isolate, args[args.Length() - 1]);
if (h.isInvalid(args)) {
return;
}
@@ -548,9 +545,8 @@ void uWS_App_listen(const FunctionCallbackInfo<Value> &args) {
/* Host is first, if present */
std::string host;
NativeStringContext nativeStringContext;
if (!args[0]->IsNumber()) {
NativeString h(nativeStringContext, isolate, args[0]);
NativeString h(isolate, args[0]);
if (h.isInvalid(args)) {
return;
}
@@ -609,8 +605,7 @@ void uWS_App_domain(const FunctionCallbackInfo<Value> &args) {
return;
}
NativeStringContext nativeStringContext;
NativeString serverName(nativeStringContext, isolate, args[0]);
NativeString serverName(isolate, args[0]);
if (serverName.isInvalid(args)) {
return;
}
@@ -631,13 +626,12 @@ void uWS_App_publish(const FunctionCallbackInfo<Value> &args) {
return;
}
NativeStringContext nativeStringContext;
NativeString topic(nativeStringContext, isolate, args[0]);
NativeString topic(isolate, args[0]);
if (topic.isInvalid(args)) {
return;
}
NativeString message(nativeStringContext, isolate, args[1]);
NativeString message(isolate, args[1]);
if (message.isInvalid(args)) {
return;
}
@@ -658,8 +652,7 @@ void uWS_App_numSubscribers(const FunctionCallbackInfo<Value> &args) {
return;
}
NativeStringContext nativeStringContext;
NativeString topic(nativeStringContext, isolate, args[0]);
NativeString topic(isolate, args[0]);
if (topic.isInvalid(args)) {
return;
}
@@ -682,9 +675,8 @@ std::pair<uWS::SocketContextOptions, bool> readOptionsObject(const FunctionCallb
Local<Object> optionsObject = Local<Object>::Cast(args[index]);
NativeStringContext nativeStringContext;
/* Key file name */
NativeString keyFileNameValue(nativeStringContext, isolate, optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "key_file_name", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked());
NativeString keyFileNameValue(isolate, optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "key_file_name", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked());
if (keyFileNameValue.isInvalid(args)) {
return {};
}
@@ -694,7 +686,7 @@ std::pair<uWS::SocketContextOptions, bool> readOptionsObject(const FunctionCallb
}
/* Cert file name */
NativeString certFileNameValue(nativeStringContext, isolate, optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "cert_file_name", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked());
NativeString certFileNameValue(isolate, optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "cert_file_name", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked());
if (certFileNameValue.isInvalid(args)) {
return {};
}
@@ -704,7 +696,7 @@ std::pair<uWS::SocketContextOptions, bool> readOptionsObject(const FunctionCallb
}
/* Passphrase */
NativeString passphraseValue(nativeStringContext, isolate, optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "passphrase", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked());
NativeString passphraseValue(isolate, optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "passphrase", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked());
if (passphraseValue.isInvalid(args)) {
return {};
}
@@ -714,7 +706,7 @@ std::pair<uWS::SocketContextOptions, bool> readOptionsObject(const FunctionCallb
}
/* DH params file name */
NativeString dhParamsFileNameValue(nativeStringContext, isolate, optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "dh_params_file_name", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked());
NativeString dhParamsFileNameValue(isolate, optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "dh_params_file_name", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked());
if (dhParamsFileNameValue.isInvalid(args)) {
return {};
}
@@ -724,7 +716,7 @@ std::pair<uWS::SocketContextOptions, bool> readOptionsObject(const FunctionCallb
}
/* CA file name */
NativeString caFileNameValue(nativeStringContext, isolate, optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "ca_file_name", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked());
NativeString caFileNameValue(isolate, optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "ca_file_name", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked());
if (caFileNameValue.isInvalid(args)) {
return {};
}
@@ -737,7 +729,7 @@ std::pair<uWS::SocketContextOptions, bool> readOptionsObject(const FunctionCallb
options.ssl_prefer_low_memory_usage = optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "ssl_prefer_low_memory_usage", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked()->BooleanValue(isolate);
/* ssl_ciphers */
NativeString sslCiphersValue(nativeStringContext, isolate, optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "ssl_ciphers", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked());
NativeString sslCiphersValue(isolate, optionsObject->Get(isolate->GetCurrentContext(), String::NewFromUtf8(isolate, "ssl_ciphers", NewStringType::kNormal).ToLocalChecked()).ToLocalChecked());
if (sslCiphersValue.isInvalid(args)) {
return {};
}
@@ -832,8 +824,7 @@ void uWS_App_addServerName(const FunctionCallbackInfo<Value> &args) {
APP *app = (APP *) args.This()->GetAlignedPointerFromInternalField(0);
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
NativeString hostnamePatternValue(nativeStringContext, isolate, args[0]);
NativeString hostnamePatternValue(isolate, args[0]);
if (hostnamePatternValue.isInvalid(args)) {
return;
}
@@ -857,8 +848,7 @@ void uWS_App_removeServerName(const FunctionCallbackInfo<Value> &args) {
APP *app = (APP *) args.This()->GetAlignedPointerFromInternalField(0);
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
NativeString hostnamePatternValue(nativeStringContext, isolate, args[0]);
NativeString hostnamePatternValue(isolate, args[0]);
if (hostnamePatternValue.isInvalid(args)) {
return;
}
@@ -940,9 +930,8 @@ void uWS_App(const FunctionCallbackInfo<Value> &args) {
APP *app = (APP *) args.This()->GetAlignedPointerFromInternalField(0);
NativeStringContext nativeStringContext;
/* Pattern */
NativeString pattern(nativeStringContext, args.GetIsolate(), args[0]);
NativeString pattern(args.GetIsolate(), args[0]);
if (pattern.isInvalid(args)) {
return;
}

View File

@@ -62,7 +62,6 @@ struct HttpRequestWrapper {
template <int QUIC>
static void req_getParameter(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *req = getHttpRequest<QUIC>(args);
if (req) {
@@ -72,7 +71,7 @@ struct HttpRequestWrapper {
int index = args[0]->Uint32Value(isolate->GetCurrentContext()).ToChecked();
parameter = req->getParameter(index);
} else {
NativeString data(nativeStringContext, args.GetIsolate(), args[0]);
NativeString data(args.GetIsolate(), args[0]);
if (data.isInvalid(args)) {
return;
}
@@ -99,10 +98,9 @@ struct HttpRequestWrapper {
template <int QUIC>
static void req_getHeader(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *req = getHttpRequest<QUIC>(args);
if (req) {
NativeString data(nativeStringContext, args.GetIsolate(), args[0]);
NativeString data(args.GetIsolate(), args[0]);
if (data.isInvalid(args)) {
return;
}
@@ -154,14 +152,13 @@ struct HttpRequestWrapper {
template <int QUIC>
static void req_getQuery(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *req = getHttpRequest<QUIC>(args);
if (req) {
std::string_view query;
/* Do we have a key argument? */
if (args.Length() == 1) {
NativeString keyString(nativeStringContext, isolate, args[0]);
NativeString keyString(isolate, args[0]);
if (keyString.isInvalid(args)) {
return;
}

View File

@@ -369,8 +369,7 @@ struct HttpResponseWrapper {
static void res_writeStatus(const FunctionCallbackInfo<Value> &args) {
auto *res = getHttpResponse<SSL>(args);
if (res) {
NativeStringContext nativeStringContext;
NativeString data(nativeStringContext, args.GetIsolate(), args[0]);
NativeString data(args.GetIsolate(), args[0]);
if (data.isInvalid(args)) {
return;
}
@@ -410,8 +409,7 @@ struct HttpResponseWrapper {
static void res_end(const FunctionCallbackInfo<Value> &args) {
auto *res = getHttpResponse<PROTOCOL>(args);
if (res) {
NativeStringContext nativeStringContext;
NativeString data(nativeStringContext, args.GetIsolate(), args[0]);
NativeString data(args.GetIsolate(), args[0]);
if (data.isInvalid(args)) {
return;
}
@@ -434,10 +432,9 @@ struct HttpResponseWrapper {
template <int PROTOCOL>
static void res_tryEnd(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *res = getHttpResponse<PROTOCOL>(args);
if (res) {
NativeString data(nativeStringContext, args.GetIsolate(), args[0]);
NativeString data(args.GetIsolate(), args[0]);
if (data.isInvalid(args)) {
return;
}
@@ -468,10 +465,9 @@ struct HttpResponseWrapper {
template <int PROTOCOL>
static void res_write(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *res = getHttpResponse<PROTOCOL>(args);
if (res) {
NativeString data(nativeStringContext, args.GetIsolate(), args[0]);
NativeString data(args.GetIsolate(), args[0]);
if (data.isInvalid(args)) {
return;
}
@@ -486,14 +482,13 @@ struct HttpResponseWrapper {
template <int PROTOCOL>
static void res_writeHeader(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *res = getHttpResponse<PROTOCOL>(args);
if (res) {
NativeString header(nativeStringContext, args.GetIsolate(), args[0]);
NativeString header(args.GetIsolate(), args[0]);
if (header.isInvalid(args)) {
return;
}
NativeString value(nativeStringContext, args.GetIsolate(), args[1]);
NativeString value(args.GetIsolate(), args[1]);
if (value.isInvalid(args)) {
return;
}
@@ -526,7 +521,6 @@ struct HttpResponseWrapper {
template <int SSL>
static void res_upgrade(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *res = getHttpResponse<SSL>(args);
if (res) {
/* We require exactly 5 arguments */
@@ -534,17 +528,17 @@ struct HttpResponseWrapper {
return;
}
NativeString secWebSocketKey(nativeStringContext, args.GetIsolate(), args[1]);
NativeString secWebSocketKey(args.GetIsolate(), args[1]);
if (secWebSocketKey.isInvalid(args)) {
return;
}
NativeString secWebSocketProtocol(nativeStringContext, args.GetIsolate(), args[2]);
NativeString secWebSocketProtocol(args.GetIsolate(), args[2]);
if (secWebSocketProtocol.isInvalid(args)) {
return;
}
NativeString secWebSocketExtensions(nativeStringContext, args.GetIsolate(), args[3]);
NativeString secWebSocketExtensions(args.GetIsolate(), args[3]);
if (secWebSocketExtensions.isInvalid(args)) {
return;
}

View File

@@ -21,7 +21,6 @@
#include <openssl/ssl.h>
#include <openssl/x509.h>
#include <v8.h>
#include <vector>
using namespace v8;
/* Unfortunately we _have_ to depend on Node.js crap */
@@ -119,26 +118,13 @@ struct Callback {
}
};
class NativeStringContext {
inline static thread_local std::vector<char> pool = std::vector<char>(8 * 1024 * 1024);
size_t pool_offset = 0;
public:
char *alloc(size_t size) {
if (pool_offset + size > pool.size()) {
pool.resize(pool_offset + size);
}
char *ptr = pool.data() + pool_offset;
pool_offset += size;
return ptr;
}
};
class NativeString {
char *data;
size_t length;
bool strAllocated = false;
bool invalid = false;
public:
NativeString(NativeStringContext &ctx, Isolate *isolate, const Local<Value> &value) {
NativeString(Isolate *isolate, const Local<Value> &value) {
if (value->IsUndefined()) {
data = nullptr;
length = 0;
@@ -152,13 +138,15 @@ public:
data = (char *) strView.data8();
} else {
// utf16: copy and convert to utf8
strAllocated = true;
length = string->Utf8LengthV2(isolate);
data = ctx.alloc(length);
data = new char[length];
string->WriteUtf8V2(isolate, data, length);
}
#else // Fallback Node.js < 24
strAllocated = true;
length = string->Utf8Length(isolate);
data = ctx.alloc(length);
data = new char[length];
string->WriteUtf8(isolate, data, length, nullptr, String::WriteOptions::NO_NULL_TERMINATION);
#endif
} else if (value->IsArrayBufferView()) { /* DataView or TypedArray */
@@ -191,6 +179,12 @@ public:
std::string_view getString() {
return {data, length};
}
~NativeString() {
if (strAllocated) {
delete[] data;
}
}
};
// Utility function to extract raw certificate data

View File

@@ -50,10 +50,9 @@ struct WebSocketWrapper {
template <bool SSL>
static void uWS_WebSocket_subscribe(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *ws = getWebSocket<SSL>(args);
if (ws) {
NativeString topic(nativeStringContext, isolate, args[0]);
NativeString topic(isolate, args[0]);
if (topic.isInvalid(args)) {
return;
}
@@ -67,10 +66,9 @@ struct WebSocketWrapper {
template <bool SSL>
static void uWS_WebSocket_unsubscribe(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *ws = getWebSocket<SSL>(args);
if (ws) {
NativeString topic(nativeStringContext, isolate, args[0]);
NativeString topic(isolate, args[0]);
if (topic.isInvalid(args)) {
return;
}
@@ -84,18 +82,17 @@ struct WebSocketWrapper {
template <bool SSL>
static void uWS_WebSocket_publish(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *ws = getWebSocket<SSL>(args);
if (ws) {
if (missingArguments(2, args)) {
return;
}
NativeString topic(nativeStringContext, isolate, args[0]);
NativeString topic(isolate, args[0]);
if (topic.isInvalid(args)) {
return;
}
NativeString message(nativeStringContext, isolate, args[1]);
NativeString message(isolate, args[1]);
if (message.isInvalid(args)) {
return;
}
@@ -122,7 +119,6 @@ struct WebSocketWrapper {
template <bool SSL>
static void uWS_WebSocket_end(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *ws = getWebSocket<SSL>(args);
if (ws) {
int code = 0;
@@ -130,7 +126,7 @@ struct WebSocketWrapper {
code = args[0]->Uint32Value(isolate->GetCurrentContext()).ToChecked();
}
NativeString message(nativeStringContext, args.GetIsolate(), args[1]);
NativeString message(args.GetIsolate(), args[1]);
if (message.isInvalid(args)) {
return;
}
@@ -190,10 +186,9 @@ struct WebSocketWrapper {
template <bool SSL>
static void uWS_WebSocket_sendFirstFragment(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *ws = getWebSocket<SSL>(args);
if (ws) {
NativeString message(nativeStringContext, args.GetIsolate(), args[0]);
NativeString message(args.GetIsolate(), args[0]);
if (message.isInvalid(args)) {
return;
}
@@ -208,10 +203,9 @@ struct WebSocketWrapper {
template <bool SSL>
static void uWS_WebSocket_sendFragment(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *ws = getWebSocket<SSL>(args);
if (ws) {
NativeString message(nativeStringContext, args.GetIsolate(), args[0]);
NativeString message(args.GetIsolate(), args[0]);
if (message.isInvalid(args)) {
return;
}
@@ -226,10 +220,9 @@ struct WebSocketWrapper {
template <bool SSL>
static void uWS_WebSocket_sendLastFragment(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *ws = getWebSocket<SSL>(args);
if (ws) {
NativeString message(nativeStringContext, args.GetIsolate(), args[0]);
NativeString message(args.GetIsolate(), args[0]);
if (message.isInvalid(args)) {
return;
}
@@ -244,10 +237,9 @@ struct WebSocketWrapper {
template <bool SSL>
static void uWS_WebSocket_send(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *ws = getWebSocket<SSL>(args);
if (ws) {
NativeString message(nativeStringContext, args.GetIsolate(), args[0]);
NativeString message(args.GetIsolate(), args[0]);
if (message.isInvalid(args)) {
return;
}
@@ -262,10 +254,9 @@ struct WebSocketWrapper {
template <bool SSL>
static void uWS_WebSocket_isSubscribed(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *ws = getWebSocket<SSL>(args);
if (ws) {
NativeString topic(nativeStringContext, args.GetIsolate(), args[0]);
NativeString topic(args.GetIsolate(), args[0]);
if (topic.isInvalid(args)) {
return;
}
@@ -280,10 +271,9 @@ struct WebSocketWrapper {
template <bool SSL>
static void uWS_WebSocket_ping(const FunctionCallbackInfo<Value> &args) {
Isolate *isolate = args.GetIsolate();
NativeStringContext nativeStringContext;
auto *ws = getWebSocket<SSL>(args);
if (ws) {
NativeString message(nativeStringContext, args.GetIsolate(), args[0]);
NativeString message(args.GetIsolate(), args[0]);
if (message.isInvalid(args)) {
return;
}

View File

@@ -46,15 +46,14 @@ void uWS_getParts(const FunctionCallbackInfo<Value> &args) {
/* Because we mutate the strings, it is important that we get mutable input like
* ArrayBuffer or Buffer, not String! */
NativeStringContext nativeStringContext;
Isolate *isolate = args.GetIsolate();
NativeString body(nativeStringContext, args.GetIsolate(), args[0]);
NativeString body(args.GetIsolate(), args[0]);
if (body.isInvalid(args)) {
return;
}
NativeString contentType(nativeStringContext, args.GetIsolate(), args[1]);
NativeString contentType(args.GetIsolate(), args[1]);
if (contentType.isInvalid(args)) {
return;
}
@@ -150,8 +149,7 @@ void uWS_clearTimeout(const FunctionCallbackInfo<Value> &args) {
/* Pass various undocumented configs */
void uWS_cfg(const FunctionCallbackInfo<Value> &args) {
NativeStringContext nativeStringContext;
NativeString key(nativeStringContext, args.GetIsolate(), args[0]);
NativeString key(args.GetIsolate(), args[0]);
if (key.isInvalid(args)) {
return;
}
@@ -185,13 +183,12 @@ std::mutex kvMutex;
// getString(key, collection)
void uWS_getString(const FunctionCallbackInfo<Value> &args) {
NativeStringContext nativeStringContext;
NativeString key(nativeStringContext, args.GetIsolate(), args[0]);
NativeString key(args.GetIsolate(), args[0]);
if (key.isInvalid(args)) {
return;
}
NativeString collection(nativeStringContext, args.GetIsolate(), args[1]);
NativeString collection(args.GetIsolate(), args[1]);
if (collection.isInvalid(args)) {
return;
}
@@ -202,17 +199,16 @@ void uWS_getString(const FunctionCallbackInfo<Value> &args) {
}
void uWS_setString(const FunctionCallbackInfo<Value> &args) {
NativeStringContext nativeStringContext;
NativeString key(nativeStringContext, args.GetIsolate(), args[0]);
NativeString key(args.GetIsolate(), args[0]);
if (key.isInvalid(args)) {
return;
}
NativeString value(nativeStringContext, args.GetIsolate(), args[1]);
NativeString value(args.GetIsolate(), args[1]);
if (value.isInvalid(args)) {
return;
}
NativeString collection(nativeStringContext, args.GetIsolate(), args[2]);
NativeString collection(args.GetIsolate(), args[2]);
if (collection.isInvalid(args)) {
return;
}
@@ -221,13 +217,12 @@ void uWS_setString(const FunctionCallbackInfo<Value> &args) {
}
void uWS_getInteger(const FunctionCallbackInfo<Value> &args) {
NativeStringContext nativeStringContext;
NativeString key(nativeStringContext, args.GetIsolate(), args[0]);
NativeString key(args.GetIsolate(), args[0]);
if (key.isInvalid(args)) {
return;
}
NativeString collection(nativeStringContext, args.GetIsolate(), args[1]);
NativeString collection(args.GetIsolate(), args[1]);
if (collection.isInvalid(args)) {
return;
}
@@ -238,15 +233,14 @@ void uWS_getInteger(const FunctionCallbackInfo<Value> &args) {
}
void uWS_setInteger(const FunctionCallbackInfo<Value> &args) {
NativeStringContext nativeStringContext;
NativeString key(nativeStringContext, args.GetIsolate(), args[0]);
NativeString key(args.GetIsolate(), args[0]);
if (key.isInvalid(args)) {
return;
}
uint32_t value = Local<Integer>::Cast(args[1])->Value();
NativeString collection(nativeStringContext, args.GetIsolate(), args[2]);
NativeString collection(args.GetIsolate(), args[2]);
if (collection.isInvalid(args)) {
return;
}
@@ -255,15 +249,14 @@ void uWS_setInteger(const FunctionCallbackInfo<Value> &args) {
}
void uWS_incInteger(const FunctionCallbackInfo<Value> &args) {
NativeStringContext nativeStringContext;
NativeString key(nativeStringContext, args.GetIsolate(), args[0]);
NativeString key(args.GetIsolate(), args[0]);
if (key.isInvalid(args)) {
return;
}
uint32_t change = Local<Integer>::Cast(args[1])->Value();
NativeString collection(nativeStringContext, args.GetIsolate(), args[2]);
NativeString collection(args.GetIsolate(), args[2]);
if (collection.isInvalid(args)) {
return;
}
@@ -276,8 +269,7 @@ void uWS_incInteger(const FunctionCallbackInfo<Value> &args) {
/* This one will spike memory usage for large stores */
void uWS_getStringKeys(const FunctionCallbackInfo<Value> &args) {
NativeStringContext nativeStringContext;
NativeString collection(nativeStringContext, args.GetIsolate(), args[0]);
NativeString collection(args.GetIsolate(), args[0]);
if (collection.isInvalid(args)) {
return;
}
@@ -295,8 +287,7 @@ void uWS_getStringKeys(const FunctionCallbackInfo<Value> &args) {
void uWS_getIntegerKeys(const FunctionCallbackInfo<Value> &args) {
NativeStringContext nativeStringContext;
NativeString collection(nativeStringContext, args.GetIsolate(), args[0]);
NativeString collection(args.GetIsolate(), args[0]);
if (collection.isInvalid(args)) {
return;
}
@@ -314,13 +305,12 @@ void uWS_getIntegerKeys(const FunctionCallbackInfo<Value> &args) {
void uWS_deleteString(const FunctionCallbackInfo<Value> &args) {
NativeStringContext nativeStringContext;
NativeString key(nativeStringContext, args.GetIsolate(), args[0]);
NativeString key(args.GetIsolate(), args[0]);
if (key.isInvalid(args)) {
return;
}
NativeString collection(nativeStringContext, args.GetIsolate(), args[1]);
NativeString collection(args.GetIsolate(), args[1]);
if (collection.isInvalid(args)) {
return;
}
@@ -332,13 +322,12 @@ void uWS_deleteString(const FunctionCallbackInfo<Value> &args) {
void uWS_deleteInteger(const FunctionCallbackInfo<Value> &args) {
NativeStringContext nativeStringContext;
NativeString key(nativeStringContext, args.GetIsolate(), args[0]);
NativeString key(args.GetIsolate(), args[0]);
if (key.isInvalid(args)) {
return;
}
NativeString collection(nativeStringContext, args.GetIsolate(), args[1]);
NativeString collection(args.GetIsolate(), args[1]);
if (collection.isInvalid(args)) {
return;
}
@@ -350,8 +339,7 @@ void uWS_deleteInteger(const FunctionCallbackInfo<Value> &args) {
void uWS_deleteStringCollection(const FunctionCallbackInfo<Value> &args) {
NativeStringContext nativeStringContext;
NativeString collection(nativeStringContext, args.GetIsolate(), args[0]);
NativeString collection(args.GetIsolate(), args[0]);
if (collection.isInvalid(args)) {
return;
}
@@ -363,8 +351,7 @@ void uWS_deleteStringCollection(const FunctionCallbackInfo<Value> &args) {
void uWS_deleteIntegerCollection(const FunctionCallbackInfo<Value> &args) {
NativeStringContext nativeStringContext;
NativeString collection(nativeStringContext, args.GetIsolate(), args[0]);
NativeString collection(args.GetIsolate(), args[0]);
if (collection.isInvalid(args)) {
return;
}