From c831dd8db86152e8482fa2a8f69b21fca899b20a Mon Sep 17 00:00:00 2001 From: Dylan Conway <35280289+dylan-conway@users.noreply.github.com> Date: Wed, 3 Apr 2024 17:10:39 -0700 Subject: [PATCH] Upgrade webkit (#9885) * span * remove JSStringIsEqualToString * bump webkit tag * span literal * undo * fix windows build * Update JSStringDecoder.cpp * Update JSStringDecoder.cpp * Update JSStringDecoder.cpp --------- Co-authored-by: Jarred Sumner Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> --- CMakeLists.txt | 2 +- src/bun.js/bindings/BunDebugger.cpp | 16 +- src/bun.js/bindings/BunInspector.cpp | 2 +- src/bun.js/bindings/BunProcess.cpp | 16 +- src/bun.js/bindings/BunString.cpp | 6 +- src/bun.js/bindings/ErrorStackTrace.cpp | 19 +- src/bun.js/bindings/JSCTaskScheduler.cpp | 6 +- .../bindings/JSEnvironmentVariableMap.cpp | 2 +- src/bun.js/bindings/JSStringDecoder.cpp | 18 +- src/bun.js/bindings/KeyObject.cpp | 45 +- src/bun.js/bindings/NodeHTTP.cpp | 11 +- src/bun.js/bindings/NodeTLS.cpp | 9 +- src/bun.js/bindings/NodeURL.cpp | 4 +- src/bun.js/bindings/Serialization.cpp | 2 +- src/bun.js/bindings/ZigGlobalObject.cpp | 4 +- src/bun.js/bindings/bindings.cpp | 44 +- src/bun.js/bindings/helpers.h | 18 +- src/bun.js/bindings/napi.cpp | 12 +- src/bun.js/bindings/napi_external.h | 4 +- src/bun.js/bindings/sqlite/JSSQLStatement.cpp | 15 +- .../bindings/webcore/HTTPHeaderNames.cpp | 554 +++++++++--------- src/bun.js/bindings/webcore/HTTPParsers.cpp | 10 +- .../webcore/SerializedScriptValue.cpp | 20 +- src/bun.js/bindings/webcore/SharedBuffer.cpp | 12 +- .../CryptoAlgorithmAES_GCMOpenSSL.cpp | 2 +- .../CryptoAlgorithmAesCbcCfbParams.h | 2 +- .../webcrypto/CryptoAlgorithmAesCtrParams.h | 2 +- .../webcrypto/CryptoAlgorithmAesGcmParams.h | 4 +- .../webcrypto/CryptoAlgorithmEd25519.cpp | 2 +- .../webcrypto/CryptoAlgorithmHkdfParams.h | 4 +- .../webcrypto/CryptoAlgorithmPbkdf2Params.h | 2 +- .../CryptoAlgorithmRsaKeyGenParams.h | 3 +- .../webcrypto/CryptoAlgorithmRsaOaepParams.h | 2 +- .../bindings/webcrypto/CryptoKeyHMAC.cpp | 2 +- .../bindings/webcrypto/CryptoKeyOKP.cpp | 2 +- .../webcrypto/CryptoKeyOKPOpenSSL.cpp | 10 +- .../bindings/webcrypto/SubtleCrypto.cpp | 8 +- src/bun.js/javascript_core_c_api.zig | 1 - src/bun.js/modules/BunJSCModule.h | 2 +- src/shell/shell.zig | 8 +- 40 files changed, 449 insertions(+), 458 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5581f683c3..2c96f17775 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_policy(SET CMP0091 NEW) cmake_policy(SET CMP0067 NEW) set(Bun_VERSION "1.1.1") -set(WEBKIT_TAG 089023cc9078b3aa173869fd6685f3e7bed2a994) +set(WEBKIT_TAG 2475726ed0329ab2d2a92daf73e12ee1e485d575) set(BUN_WORKDIR "${CMAKE_CURRENT_BINARY_DIR}") message(STATUS "Configuring Bun ${Bun_VERSION} in ${BUN_WORKDIR}") diff --git a/src/bun.js/bindings/BunDebugger.cpp b/src/bun.js/bindings/BunDebugger.cpp index b5a7c480d0..be9ff69b69 100644 --- a/src/bun.js/bindings/BunDebugger.cpp +++ b/src/bun.js/bindings/BunDebugger.cpp @@ -180,7 +180,7 @@ public: Zig::GlobalObject* global = reinterpret_cast(&globalObject); Vector connections; { - WTF::LockHolder locker(inspectorConnectionsLock); + Locker locker(inspectorConnectionsLock); connections.appendVector(inspectorConnections->get(global->scriptExecutionContext()->identifier())); } @@ -236,7 +236,7 @@ public: WTF::Vector messages; { - WTF::LockHolder locker(jsThreadMessagesLock); + Locker locker(jsThreadMessagesLock); this->jsThreadMessages.swap(messages); } @@ -276,7 +276,7 @@ public: WTF::Vector messages; { - WTF::LockHolder locker(debuggerThreadMessagesLock); + Locker locker(debuggerThreadMessagesLock); this->debuggerThreadMessages.swap(messages); } @@ -297,7 +297,7 @@ public: void sendMessageToDebuggerThread(WTF::String&& inputMessage) { { - WTF::LockHolder locker(debuggerThreadMessagesLock); + Locker locker(debuggerThreadMessagesLock); debuggerThreadMessages.append(inputMessage); } @@ -311,7 +311,7 @@ public: void sendMessageToInspectorFromDebuggerThread(const WTF::String& inputMessage) { { - WTF::LockHolder locker(jsThreadMessagesLock); + Locker locker(jsThreadMessagesLock); jsThreadMessages.append(inputMessage); } @@ -432,7 +432,7 @@ const JSC::ClassInfo JSBunInspectorConnection::s_info = { "BunInspectorConnectio extern "C" unsigned int Bun__createJSDebugger(Zig::GlobalObject* globalObject) { { - WTF::LockHolder locker(inspectorConnectionsLock); + Locker locker(inspectorConnectionsLock); if (inspectorConnections == nullptr) { inspectorConnections = new WTF::HashMap>(); } @@ -474,7 +474,7 @@ extern "C" void BunDebugger__willHotReload() } debuggerScriptExecutionContext->postTaskConcurrently([](ScriptExecutionContext& context) { - WTF::LockHolder locker(inspectorConnectionsLock); + Locker locker(inspectorConnectionsLock); for (auto& connections : *inspectorConnections) { for (auto* connection : connections.value) { connection->sendMessageToFrontend("{\"method\":\"Bun.canReload\"}"_s); @@ -502,7 +502,7 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionCreateConnection, (JSGlobalObject * globalObj targetContext->jsGlobalObject(), shouldRef); { - WTF::LockHolder locker(inspectorConnectionsLock); + Locker locker(inspectorConnectionsLock); auto connections = inspectorConnections->get(targetContext->identifier()); connections.append(connection); inspectorConnections->set(targetContext->identifier(), connections); diff --git a/src/bun.js/bindings/BunInspector.cpp b/src/bun.js/bindings/BunInspector.cpp index 521ab36dc0..eb00870078 100644 --- a/src/bun.js/bindings/BunInspector.cpp +++ b/src/bun.js/bindings/BunInspector.cpp @@ -67,7 +67,7 @@ public: void onMessage(std::string_view message) { - WTF::String messageString = WTF::String::fromUTF8(message.data(), message.length()); + WTF::String messageString = WTF::String::fromUTF8(std::span { message.data(), message.length() }); Inspector::JSGlobalObjectDebugger* debugger = reinterpret_cast(this->globalObject->debugger()); if (debugger) { debugger->runWhilePausedCallback = [](JSC::JSGlobalObject& globalObject, bool& done) -> void { diff --git a/src/bun.js/bindings/BunProcess.cpp b/src/bun.js/bindings/BunProcess.cpp index 39bd6ca07d..9e0ea601a6 100644 --- a/src/bun.js/bindings/BunProcess.cpp +++ b/src/bun.js/bindings/BunProcess.cpp @@ -196,7 +196,7 @@ static JSValue constructProcessReleaseObject(VM& vm, JSObject* processObject) release->putDirect(vm, Identifier::fromString(vm, "name"_s), jsString(vm, WTF::String("node"_s)), 0); release->putDirect(vm, Identifier::fromString(vm, "lts"_s), jsBoolean(false), 0); - release->putDirect(vm, Identifier::fromString(vm, "sourceUrl"_s), jsString(vm, WTF::String(Bun__githubURL, strlen(Bun__githubURL))), 0); + release->putDirect(vm, Identifier::fromString(vm, "sourceUrl"_s), jsString(vm, WTF::String(std::span { Bun__githubURL, strlen(Bun__githubURL) })), 0); release->putDirect(vm, Identifier::fromString(vm, "headersUrl"_s), jsEmptyString(vm), 0); release->putDirect(vm, Identifier::fromString(vm, "libUrl"_s), jsEmptyString(vm), 0); @@ -323,7 +323,7 @@ JSC_DEFINE_HOST_FUNCTION(Process_functionDlopen, LPWSTR messageBuffer = nullptr; size_t size = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errorId, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR)&messageBuffer, 0, NULL); - WTF::String msg = makeString("LoadLibrary failed: ", WTF::StringView((UCHAR*)messageBuffer, size)); + WTF::String msg = makeString("LoadLibrary failed: ", WTF::StringView(std::span { (UCHAR*)messageBuffer, size })); LocalFree(messageBuffer); #else WTF::String msg = WTF::String::fromUTF8(dlerror()); @@ -1379,7 +1379,7 @@ static JSValue constructReportObjectComplete(VM& vm, Zig::GlobalObject* globalOb char cwd[PATH_MAX] = { 0 }; getcwd(cwd, PATH_MAX); - header->putDirect(vm, JSC::Identifier::fromString(vm, "cwd"_s), JSC::jsString(vm, String::fromUTF8ReplacingInvalidSequences(reinterpret_cast(cwd), strlen(cwd))), 0); + header->putDirect(vm, JSC::Identifier::fromString(vm, "cwd"_s), JSC::jsString(vm, String::fromUTF8ReplacingInvalidSequences(std::span { reinterpret_cast(cwd), strlen(cwd) })), 0); } header->putDirect(vm, JSC::Identifier::fromString(vm, "commandLine"_s), JSValue::decode(Bun__Process__getExecArgv(globalObject)), 0); @@ -1395,10 +1395,10 @@ static JSValue constructReportObjectComplete(VM& vm, Zig::GlobalObject* globalOb struct utsname buf; uname(&buf); - header->putDirect(vm, JSC::Identifier::fromString(vm, "osName"_s), JSC::jsString(vm, String::fromUTF8ReplacingInvalidSequences(reinterpret_cast(buf.sysname), strlen(buf.sysname))), 0); - header->putDirect(vm, JSC::Identifier::fromString(vm, "osRelease"_s), JSC::jsString(vm, String::fromUTF8ReplacingInvalidSequences(reinterpret_cast(buf.release), strlen(buf.release))), 0); - header->putDirect(vm, JSC::Identifier::fromString(vm, "osVersion"_s), JSC::jsString(vm, String::fromUTF8ReplacingInvalidSequences(reinterpret_cast(buf.version), strlen(buf.version))), 0); - header->putDirect(vm, JSC::Identifier::fromString(vm, "osMachine"_s), JSC::jsString(vm, String::fromUTF8ReplacingInvalidSequences(reinterpret_cast(buf.machine), strlen(buf.machine))), 0); + header->putDirect(vm, JSC::Identifier::fromString(vm, "osName"_s), JSC::jsString(vm, String::fromUTF8ReplacingInvalidSequences(std::span { reinterpret_cast(buf.sysname), strlen(buf.sysname) })), 0); + header->putDirect(vm, JSC::Identifier::fromString(vm, "osRelease"_s), JSC::jsString(vm, String::fromUTF8ReplacingInvalidSequences(std::span { reinterpret_cast(buf.release), strlen(buf.release) })), 0); + header->putDirect(vm, JSC::Identifier::fromString(vm, "osVersion"_s), JSC::jsString(vm, String::fromUTF8ReplacingInvalidSequences(std::span { reinterpret_cast(buf.version), strlen(buf.version) })), 0); + header->putDirect(vm, JSC::Identifier::fromString(vm, "osMachine"_s), JSC::jsString(vm, String::fromUTF8ReplacingInvalidSequences(std::span { reinterpret_cast(buf.machine), strlen(buf.machine) })), 0); } // host @@ -1407,7 +1407,7 @@ static JSValue constructReportObjectComplete(VM& vm, Zig::GlobalObject* globalOb char host[1024] = { 0 }; gethostname(host, 1024); - header->putDirect(vm, JSC::Identifier::fromString(vm, "host"_s), JSC::jsString(vm, String::fromUTF8ReplacingInvalidSequences(reinterpret_cast(host), strlen(host))), 0); + header->putDirect(vm, JSC::Identifier::fromString(vm, "host"_s), JSC::jsString(vm, String::fromUTF8ReplacingInvalidSequences(std::span { reinterpret_cast(host), strlen(host) })), 0); } #if OS(LINUX) diff --git a/src/bun.js/bindings/BunString.cpp b/src/bun.js/bindings/BunString.cpp index f2befc1d43..c50308a969 100644 --- a/src/bun.js/bindings/BunString.cpp +++ b/src/bun.js/bindings/BunString.cpp @@ -226,7 +226,7 @@ extern "C" BunString BunString__fromUTF8(const char* bytes, size_t length) return { BunStringTag::WTFStringImpl, { .wtf = &impl.leakRef() } }; } - auto str = WTF::String::fromUTF8ReplacingInvalidSequences(reinterpret_cast(bytes), length); + auto str = WTF::String::fromUTF8ReplacingInvalidSequences(std::span { reinterpret_cast(bytes), length }); str.impl()->ref(); return Bun::toString(str); } @@ -234,7 +234,7 @@ extern "C" BunString BunString__fromUTF8(const char* bytes, size_t length) extern "C" BunString BunString__fromLatin1(const char* bytes, size_t length) { ASSERT(length > 0); - return { BunStringTag::WTFStringImpl, { .wtf = &WTF::StringImpl::create(bytes, length).leakRef() } }; + return { BunStringTag::WTFStringImpl, { .wtf = &WTF::StringImpl::create(std::span { bytes, length }).leakRef() } }; } extern "C" BunString BunString__fromUTF16ToLatin1(const char16_t* bytes, size_t length) @@ -256,7 +256,7 @@ extern "C" BunString BunString__fromUTF16ToLatin1(const char16_t* bytes, size_t extern "C" BunString BunString__fromUTF16(const char16_t* bytes, size_t length) { ASSERT(length > 0); - return { BunStringTag::WTFStringImpl, { .wtf = &WTF::StringImpl::create(bytes, length).leakRef() } }; + return { BunStringTag::WTFStringImpl, { .wtf = &WTF::StringImpl::create(std::span { bytes, length }).leakRef() } }; } extern "C" BunString BunString__fromBytes(const char* bytes, size_t length) diff --git a/src/bun.js/bindings/ErrorStackTrace.cpp b/src/bun.js/bindings/ErrorStackTrace.cpp index 0f5dba4c17..2dcddc4ec8 100644 --- a/src/bun.js/bindings/ErrorStackTrace.cpp +++ b/src/bun.js/bindings/ErrorStackTrace.cpp @@ -293,13 +293,8 @@ bool JSCStackFrame::calculateSourcePositions() * Note that we're using m_codeBlock->unlinkedCodeBlock()->expressionRangeForBytecodeOffset rather than m_codeBlock->expressionRangeForBytecodeOffset * in order get the "raw" offsets and avoid the CodeBlock's expressionRangeForBytecodeOffset modifications to the line and column numbers, * (we don't need the column number from it, and we'll calculate the line "fixes" ourselves). */ - unsigned startOffset = 0; - unsigned endOffset = 0; - unsigned divotPoint = 0; - unsigned line = 0; - unsigned unusedColumn = 0; - m_codeBlock->unlinkedCodeBlock()->expressionRangeForBytecodeIndex(bytecodeIndex, divotPoint, startOffset, endOffset, line, unusedColumn); - divotPoint += m_codeBlock->sourceOffset(); + ExpressionInfo::Entry info = m_codeBlock->unlinkedCodeBlock()->expressionInfoForBytecodeIndex(bytecodeIndex); + info.divot += m_codeBlock->sourceOffset(); /* On the first line of the source code, it seems that we need to "fix" the column with the starting * offset. We currently use codeBlock->source()->startPosition().m_column.oneBasedInt() as the @@ -307,15 +302,15 @@ bool JSCStackFrame::calculateSourcePositions() * (and what CodeBlock::expressionRangeForBytecodeOffset does). This is because firstLineColumnOffset * values seems different from what we expect (according to v8's tests) and I haven't dove into the * relevant parts in JSC (yet) to figure out why. */ - unsigned columnOffset = line ? 0 : m_codeBlock->source().startColumn().zeroBasedInt(); + unsigned columnOffset = info.lineColumn.line ? 0 : m_codeBlock->source().startColumn().zeroBasedInt(); // "Fix" the line number JSC::ScriptExecutable* executable = m_codeBlock->ownerExecutable(); - line = executable->overrideLineNumber(m_vm).value_or(line + executable->firstLine()); + info.lineColumn.line = executable->overrideLineNumber(m_vm).value_or(info.lineColumn.line + executable->firstLine()); // Calculate the staring\ending offsets of the entire expression - int expressionStart = divotPoint - startOffset; - int expressionStop = divotPoint + endOffset; + int expressionStart = info.divot - info.startOffset; + int expressionStop = info.divot + info.endOffset; // Make sure the range is valid StringView sourceString = m_codeBlock->source().provider()->source(); @@ -345,7 +340,7 @@ bool JSCStackFrame::calculateSourcePositions() */ m_sourcePositions.expressionStart = WTF::OrdinalNumber::fromZeroBasedInt(expressionStart); m_sourcePositions.expressionStop = WTF::OrdinalNumber::fromZeroBasedInt(expressionStop); - m_sourcePositions.line = WTF::OrdinalNumber::fromZeroBasedInt(static_cast(line)); + m_sourcePositions.line = WTF::OrdinalNumber::fromZeroBasedInt(static_cast(info.lineColumn.line)); m_sourcePositions.startColumn = WTF::OrdinalNumber::fromZeroBasedInt((expressionStart - lineStart) + columnOffset); m_sourcePositions.endColumn = WTF::OrdinalNumber::fromZeroBasedInt(m_sourcePositions.startColumn.zeroBasedInt() + (expressionStop - expressionStart)); m_sourcePositions.lineStart = WTF::OrdinalNumber::fromZeroBasedInt(static_cast(lineStart)); diff --git a/src/bun.js/bindings/JSCTaskScheduler.cpp b/src/bun.js/bindings/JSCTaskScheduler.cpp index b97b2e9d26..9f280e061c 100644 --- a/src/bun.js/bindings/JSCTaskScheduler.cpp +++ b/src/bun.js/bindings/JSCTaskScheduler.cpp @@ -39,7 +39,7 @@ void JSCTaskScheduler::onAddPendingWork(std::unique_ptr ticket, JSC: JSC::VM& vm = getVM(ticket.get()); auto clientData = WebCore::clientData(vm); auto& scheduler = clientData->deferredWorkTimer; - LockHolder holder { scheduler.m_lock }; + Locker holder { scheduler.m_lock }; if (kind != DeferredWorkTimer::WorkKind::Other) { Bun__eventLoop__incrementRefConcurrently(clientData->bunVM, 1); @@ -58,7 +58,7 @@ void JSCTaskScheduler::onCancelPendingWork(Ticket ticket) { auto& scheduler = WebCore::clientData(getVM(ticket))->deferredWorkTimer; - LockHolder holder { scheduler.m_lock }; + Locker holder { scheduler.m_lock }; bool isKeepingEventLoopAlive = scheduler.m_pendingTicketsKeepingEventLoopAlive.removeIf([ticket](const auto& pendingTicket) { return pendingTicket.get() == ticket; }); @@ -76,7 +76,7 @@ void JSCTaskScheduler::onCancelPendingWork(Ticket ticket) static void runPendingWork(void* bunVM, Bun::JSCTaskScheduler& scheduler, JSCDeferredWorkTask* job) { - LockHolder holder { scheduler.m_lock }; + Locker holder { scheduler.m_lock }; auto pendingTicket = scheduler.m_pendingTicketsKeepingEventLoopAlive.take(job->ticket); if (!pendingTicket) { pendingTicket = scheduler.m_pendingTicketsOther.take(job->ticket); diff --git a/src/bun.js/bindings/JSEnvironmentVariableMap.cpp b/src/bun.js/bindings/JSEnvironmentVariableMap.cpp index 3d59d9c459..7913c59020 100644 --- a/src/bun.js/bindings/JSEnvironmentVariableMap.cpp +++ b/src/bun.js/bindings/JSEnvironmentVariableMap.cpp @@ -144,7 +144,7 @@ JSValue createEnvironmentVariablesMap(Zig::GlobalObject* globalObject) for (size_t i = 0; i < count; i++) { unsigned char* chars; size_t len = Bun__getEnvKey(list, i, &chars); - auto name = String::fromUTF8(chars, len); + auto name = String::fromUTF8(std::span { chars, len }); #if OS(WINDOWS) keyArray->putByIndexInline(globalObject, (unsigned)i, jsString(vm, name), false); #endif diff --git a/src/bun.js/bindings/JSStringDecoder.cpp b/src/bun.js/bindings/JSStringDecoder.cpp index 1a34ffae9f..70feb31b72 100644 --- a/src/bun.js/bindings/JSStringDecoder.cpp +++ b/src/bun.js/bindings/JSStringDecoder.cpp @@ -9,6 +9,8 @@ #include "JSDOMConvertEnumeration.h" #include #include "BunClientData.h" +#include "wtf/text/StringImpl.h" +#include "wtf/unicode/CharacterNames.h" namespace WebCore { @@ -22,6 +24,12 @@ static JSC_DECLARE_CUSTOM_GETTER(jsStringDecoder_lastChar); static JSC_DECLARE_CUSTOM_GETTER(jsStringDecoder_lastNeed); static JSC_DECLARE_CUSTOM_GETTER(jsStringDecoder_lastTotal); +static WTF::String replacementString() +{ + + return WTF::String(std::span { u"\uFFFD", 1 }); +} + static inline JSC::EncodedJSValue jsStringDecoderCast(JSGlobalObject* globalObject, JSValue stringDecoderValue) { if (LIKELY(jsDynamicCast(stringDecoderValue))) @@ -75,17 +83,17 @@ JSC::JSValue JSStringDecoder::fillLast(JSC::VM& vm, JSC::JSGlobalObject* globalO // utf8CheckExtraBytes if ((bufPtr[0] & 0xC0) != 0x80) { m_lastNeed = 0; - RELEASE_AND_RETURN(throwScope, JSC::jsString(vm, WTF::String(u"\uFFFD", 1))); + RELEASE_AND_RETURN(throwScope, JSC::jsString(vm, replacementString())); } if (m_lastNeed > 1 && length > 1) { if ((bufPtr[1] & 0xC0) != 0x80) { m_lastNeed = 1; - RELEASE_AND_RETURN(throwScope, JSC::jsString(vm, WTF::String(u"\uFFFD", 1))); + RELEASE_AND_RETURN(throwScope, JSC::jsString(vm, replacementString())); } if (m_lastNeed > 2 && length > 2) { if ((bufPtr[2] & 0xC0) != 0x80) { m_lastNeed = 2; - RELEASE_AND_RETURN(throwScope, JSC::jsString(vm, WTF::String(u"\uFFFD", 1))); + RELEASE_AND_RETURN(throwScope, JSC::jsString(vm, replacementString())); } } } @@ -297,11 +305,11 @@ JSStringDecoder::end(JSC::VM& vm, JSC::JSGlobalObject* globalObject, uint8_t* bu } case BufferEncodingType::utf8: { if (length == 0) { - RELEASE_AND_RETURN(throwScope, m_lastNeed ? JSC::jsString(vm, WTF::String(u"\uFFFD", 1)) : JSC::jsEmptyString(vm)); + RELEASE_AND_RETURN(throwScope, m_lastNeed ? JSC::jsString(vm, replacementString()) : JSC::jsEmptyString(vm)); } JSString* firstHalf = write(vm, globalObject, bufPtr, length).toString(globalObject); RETURN_IF_EXCEPTION(throwScope, JSC::jsUndefined()); - RELEASE_AND_RETURN(throwScope, m_lastNeed ? JSC::jsString(globalObject, firstHalf, WTF::String(u"\uFFFD", 1)) : firstHalf); + RELEASE_AND_RETURN(throwScope, m_lastNeed ? JSC::jsString(globalObject, firstHalf, replacementString()) : firstHalf); } case BufferEncodingType::base64: case BufferEncodingType::base64url: { diff --git a/src/bun.js/bindings/KeyObject.cpp b/src/bun.js/bindings/KeyObject.cpp index 9bbd9969f0..c35f7dd5a8 100644 --- a/src/bun.js/bindings/KeyObject.cpp +++ b/src/bun.js/bindings/KeyObject.cpp @@ -586,7 +586,7 @@ JSC::EncodedJSValue KeyObject__createPrivateKey(JSC::JSGlobalObject* globalObjec auto impl = CryptoKeyRSA::create(pKeyID == EVP_PKEY_RSA_PSS ? CryptoAlgorithmIdentifier::RSA_PSS : CryptoAlgorithmIdentifier::RSA_OAEP, CryptoAlgorithmIdentifier::SHA_1, false, CryptoKeyType::Private, WTFMove(pkey), true, CryptoKeyUsageDecrypt); return JSC::JSValue::encode(JSCryptoKey::create(structure, zigGlobalObject, WTFMove(impl))); } else if (pKeyID == EVP_PKEY_ED25519) { - auto result = CryptoKeyOKP::importPkcs8(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, Vector((uint8_t*)data, byteLength), true, CryptoKeyUsageSign); + auto result = CryptoKeyOKP::importPkcs8(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, Vector(std::span { (uint8_t*)data, byteLength }), true, CryptoKeyUsageSign); if (UNLIKELY(result == nullptr)) { throwException(globalObject, scope, createTypeError(globalObject, "Invalid Ed25519 private key"_s)); return JSValue::encode(JSC::jsUndefined()); @@ -594,7 +594,7 @@ JSC::EncodedJSValue KeyObject__createPrivateKey(JSC::JSGlobalObject* globalObjec auto impl = result.releaseNonNull(); return JSC::JSValue::encode(JSCryptoKey::create(structure, zigGlobalObject, WTFMove(impl))); } else if (pKeyID == EVP_PKEY_X25519) { - auto result = CryptoKeyOKP::importPkcs8(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::X25519, Vector((uint8_t*)data, byteLength), true, CryptoKeyUsageSign); + auto result = CryptoKeyOKP::importPkcs8(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::X25519, Vector(std::span { (uint8_t*)data, byteLength }), true, CryptoKeyUsageSign); if (UNLIKELY(result == nullptr)) { throwException(globalObject, scope, createTypeError(globalObject, "Invalid Ed25519 private key"_s)); return JSValue::encode(JSC::jsUndefined()); @@ -627,9 +627,9 @@ JSC::EncodedJSValue KeyObject__createPrivateKey(JSC::JSGlobalObject* globalObjec throwException(globalObject, scope, createTypeError(globalObject, "Unsupported EC curve"_s)); return JSValue::encode(JSC::jsUndefined()); } - auto result = CryptoKeyEC::platformImportPkcs8(CryptoAlgorithmIdentifier::ECDH, curve, Vector((uint8_t*)data, byteLength), true, CryptoKeyUsageSign); + auto result = CryptoKeyEC::platformImportPkcs8(CryptoAlgorithmIdentifier::ECDH, curve, Vector(std::span { (uint8_t*)data, byteLength }), true, CryptoKeyUsageSign); if (UNLIKELY(result == nullptr)) { - result = CryptoKeyEC::platformImportPkcs8(CryptoAlgorithmIdentifier::ECDSA, curve, Vector((uint8_t*)data, byteLength), true, CryptoKeyUsageSign); + result = CryptoKeyEC::platformImportPkcs8(CryptoAlgorithmIdentifier::ECDSA, curve, Vector(std::span { (uint8_t*)data, byteLength }), true, CryptoKeyUsageSign); } EC_KEY_free(ec_key); if (UNLIKELY(result == nullptr)) { @@ -1047,7 +1047,7 @@ JSC::EncodedJSValue KeyObject__createPublicKey(JSC::JSGlobalObject* globalObject auto impl = CryptoKeyRSA::create(pKeyID == EVP_PKEY_RSA_PSS ? CryptoAlgorithmIdentifier::RSA_PSS : CryptoAlgorithmIdentifier::RSA_OAEP, CryptoAlgorithmIdentifier::SHA_1, false, CryptoKeyType::Public, WTFMove(pkey), true, CryptoKeyUsageEncrypt); return JSC::JSValue::encode(JSCryptoKey::create(structure, zigGlobalObject, WTFMove(impl))); } else if (pKeyID == EVP_PKEY_ED25519) { - auto result = CryptoKeyOKP::importSpki(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, Vector((uint8_t*)pem.der_data, (size_t)pem.der_len), true, CryptoKeyUsageVerify); + auto result = CryptoKeyOKP::importSpki(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, Vector(std::span { (uint8_t*)pem.der_data, (size_t)pem.der_len }), true, CryptoKeyUsageVerify); if (pem.der_data) { OPENSSL_clear_free(pem.der_data, pem.der_len); } @@ -1058,7 +1058,7 @@ JSC::EncodedJSValue KeyObject__createPublicKey(JSC::JSGlobalObject* globalObject auto impl = result.releaseNonNull(); return JSC::JSValue::encode(JSCryptoKey::create(structure, zigGlobalObject, WTFMove(impl))); } else if (pKeyID == EVP_PKEY_X25519) { - auto result = CryptoKeyOKP::importSpki(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::X25519, Vector((uint8_t*)pem.der_data, (size_t)pem.der_len), true, CryptoKeyUsageVerify); + auto result = CryptoKeyOKP::importSpki(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::X25519, Vector(std::span { (uint8_t*)pem.der_data, (size_t)pem.der_len }), true, CryptoKeyUsageVerify); if (pem.der_data) { OPENSSL_clear_free(pem.der_data, pem.der_len); } @@ -1103,9 +1103,9 @@ JSC::EncodedJSValue KeyObject__createPublicKey(JSC::JSGlobalObject* globalObject throwException(globalObject, scope, createTypeError(globalObject, "Unsupported EC curve"_s)); return JSValue::encode(JSC::jsUndefined()); } - auto result = CryptoKeyEC::platformImportSpki(CryptoAlgorithmIdentifier::ECDH, curve, Vector((uint8_t*)pem.der_data, (size_t)pem.der_len), true, CryptoKeyUsageVerify); + auto result = CryptoKeyEC::platformImportSpki(CryptoAlgorithmIdentifier::ECDH, curve, Vector(std::span { (uint8_t*)pem.der_data, (size_t)pem.der_len }), true, CryptoKeyUsageVerify); if (UNLIKELY(result == nullptr)) { - result = CryptoKeyEC::platformImportSpki(CryptoAlgorithmIdentifier::ECDSA, curve, Vector((uint8_t*)pem.der_data, (size_t)pem.der_len), true, CryptoKeyUsageVerify); + result = CryptoKeyEC::platformImportSpki(CryptoAlgorithmIdentifier::ECDSA, curve, Vector(std::span { (uint8_t*)pem.der_data, (size_t)pem.der_len }), true, CryptoKeyUsageVerify); } if (pem.der_data) { OPENSSL_clear_free(pem.der_data, pem.der_len); @@ -1170,7 +1170,7 @@ JSC::EncodedJSValue KeyObject__createPublicKey(JSC::JSGlobalObject* globalObject auto impl = CryptoKeyRSA::create(pKeyID == EVP_PKEY_RSA_PSS ? CryptoAlgorithmIdentifier::RSA_PSS : CryptoAlgorithmIdentifier::RSA_OAEP, CryptoAlgorithmIdentifier::SHA_1, false, CryptoKeyType::Public, WTFMove(pkey), true, CryptoKeyUsageEncrypt); return JSC::JSValue::encode(JSCryptoKey::create(structure, zigGlobalObject, WTFMove(impl))); } else if (pKeyID == EVP_PKEY_ED25519) { - auto result = CryptoKeyOKP::importSpki(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, Vector((uint8_t*)data, byteLength), true, CryptoKeyUsageVerify); + auto result = CryptoKeyOKP::importSpki(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::Ed25519, Vector(std::span { (uint8_t*)data, byteLength }), true, CryptoKeyUsageVerify); if (UNLIKELY(result == nullptr)) { throwException(globalObject, scope, createTypeError(globalObject, "Invalid Ed25519 public key"_s)); return JSValue::encode(JSC::jsUndefined()); @@ -1178,7 +1178,7 @@ JSC::EncodedJSValue KeyObject__createPublicKey(JSC::JSGlobalObject* globalObject auto impl = result.releaseNonNull(); return JSC::JSValue::encode(JSCryptoKey::create(structure, zigGlobalObject, WTFMove(impl))); } else if (pKeyID == EVP_PKEY_X25519) { - auto result = CryptoKeyOKP::importSpki(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::X25519, Vector((uint8_t*)data, byteLength), true, CryptoKeyUsageVerify); + auto result = CryptoKeyOKP::importSpki(CryptoAlgorithmIdentifier::Ed25519, CryptoKeyOKP::NamedCurve::X25519, Vector(std::span { (uint8_t*)data, byteLength }), true, CryptoKeyUsageVerify); if (UNLIKELY(result == nullptr)) { throwException(globalObject, scope, createTypeError(globalObject, "Invalid Ed25519 public key"_s)); return JSValue::encode(JSC::jsUndefined()); @@ -1212,10 +1212,10 @@ JSC::EncodedJSValue KeyObject__createPublicKey(JSC::JSGlobalObject* globalObject return JSValue::encode(JSC::jsUndefined()); } auto alg = CryptoAlgorithmIdentifier::ECDH; - auto result = CryptoKeyEC::platformImportSpki(alg, curve, Vector((uint8_t*)data, byteLength), true, CryptoKeyUsageVerify); + auto result = CryptoKeyEC::platformImportSpki(alg, curve, Vector(std::span { (uint8_t*)data, byteLength }), true, CryptoKeyUsageVerify); if (UNLIKELY(result == nullptr)) { alg = CryptoAlgorithmIdentifier::ECDSA; - result = CryptoKeyEC::platformImportSpki(CryptoAlgorithmIdentifier::ECDSA, curve, Vector((uint8_t*)data, byteLength), true, CryptoKeyUsageVerify); + result = CryptoKeyEC::platformImportSpki(CryptoAlgorithmIdentifier::ECDSA, curve, Vector(std::span { (uint8_t*)data, byteLength }), true, CryptoKeyUsageVerify); } if (UNLIKELY(result == nullptr)) { throwException(globalObject, scope, createTypeError(globalObject, "Invalid EC public key"_s)); @@ -1328,7 +1328,7 @@ static ExceptionOr> KeyObject__GetBuffer(JSValue bufferArg) if (UNLIKELY(!data)) { break; } - return Vector((uint8_t*)data, byteLength); + return Vector(std::span { (uint8_t*)data, byteLength }); } case ArrayBufferType: { auto* jsBuffer = jsDynamicCast(bufferArgCell); @@ -1341,7 +1341,7 @@ static ExceptionOr> KeyObject__GetBuffer(JSValue bufferArg) if (UNLIKELY(!data)) { break; } - return Vector((uint8_t*)data, byteLength); + return Vector(std::span { (uint8_t*)data, byteLength }); } default: { break; @@ -1986,7 +1986,7 @@ JSC::EncodedJSValue KeyObject__Exports(JSC::JSGlobalObject* globalObject, JSC::C BIO_get_mem_ptr(bio, &bptr); auto length = bptr->length; if (string == "pem"_s) { - auto str = WTF::String::fromUTF8(bptr->data, length); + auto str = WTF::String::fromUTF8(std::span { bptr->data, length }); return JSValue::encode(JSC::jsString(vm, str)); } @@ -2132,7 +2132,7 @@ JSC::EncodedJSValue KeyObject__Exports(JSC::JSGlobalObject* globalObject, JSC::C BIO_get_mem_ptr(bio, &bptr); auto length = bptr->length; if (string == "pem"_s) { - auto str = WTF::String::fromUTF8(bptr->data, length); + auto str = WTF::String::fromUTF8(std::span { bptr->data, length }); return JSValue::encode(JSC::jsString(vm, str)); } @@ -2279,12 +2279,12 @@ JSC::EncodedJSValue KeyObject__Exports(JSC::JSGlobalObject* globalObject, JSC::C BIO_get_mem_ptr(bio, &bptr); auto length = bptr->length; if (string == "pem"_s) { - auto str = WTF::String::fromUTF8(bptr->data, length); + auto str = WTF::String::fromUTF8(std::span { bptr->data, length }); EVP_PKEY_free(evpKey); return JSValue::encode(JSC::jsString(vm, str)); } - auto* buffer = WebCore::createBuffer(globalObject, { bptr->data, length }); + auto* buffer = WebCore::createBuffer(globalObject, std::span { bptr->data, length }); BIO_free(bio); EVP_PKEY_free(evpKey); @@ -2541,7 +2541,7 @@ JSC::EncodedJSValue KeyObject__generateKeyPairSync(JSC::JSGlobalObject* lexicalG throwException(lexicalGlobalObject, scope, createTypeError(lexicalGlobalObject, "Failed to generate key pair"_s)); }; // this is actually sync - CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_OAEP, CryptoAlgorithmIdentifier::SHA_1, false, modulusLength, Vector((uint8_t*)&publicExponentArray, 4), true, CryptoKeyUsageEncrypt | CryptoKeyUsageDecrypt, WTFMove(keyPairCallback), WTFMove(failureCallback), zigGlobalObject->scriptExecutionContext()); + CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_OAEP, CryptoAlgorithmIdentifier::SHA_1, false, modulusLength, Vector(std::span { (uint8_t*)&publicExponentArray, 4 }), true, CryptoKeyUsageEncrypt | CryptoKeyUsageDecrypt, WTFMove(keyPairCallback), WTFMove(failureCallback), zigGlobalObject->scriptExecutionContext()); return JSValue::encode(returnValue); } if (type_str == "rsa-pss"_s) { @@ -2627,7 +2627,7 @@ JSC::EncodedJSValue KeyObject__generateKeyPairSync(JSC::JSGlobalObject* lexicalG throwException(lexicalGlobalObject, scope, createTypeError(lexicalGlobalObject, "Failed to generate key pair"_s)); }; // this is actually sync - CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_PSS, hash, hasHash, modulusLength, Vector((uint8_t*)&publicExponentArray, 4), true, CryptoKeyUsageEncrypt | CryptoKeyUsageDecrypt, WTFMove(keyPairCallback), WTFMove(failureCallback), zigGlobalObject->scriptExecutionContext()); + CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_PSS, hash, hasHash, modulusLength, Vector(std::span { (uint8_t*)&publicExponentArray, 4 }), true, CryptoKeyUsageEncrypt | CryptoKeyUsageDecrypt, WTFMove(keyPairCallback), WTFMove(failureCallback), zigGlobalObject->scriptExecutionContext()); return JSValue::encode(returnValue); } else if (type_str == "ec"_s) { if (count == 1) { @@ -2926,8 +2926,9 @@ JSC::EncodedJSValue KeyObject__SymmetricKeySize(JSC::JSGlobalObject* globalObjec return JSC::JSValue::encode(JSC::jsUndefined()); } -JSValue createNodeCryptoBinding(Zig::GlobalObject* globalObject) { - VM&vm = globalObject->vm(); +JSValue createNodeCryptoBinding(Zig::GlobalObject* globalObject) +{ + VM& vm = globalObject->vm(); auto* obj = constructEmptyObject(globalObject); obj->putDirect( vm, JSC::PropertyName(JSC::Identifier::fromString(vm, "symmetricKeySize"_s)), JSC::JSFunction::create(vm, globalObject, 1, "symmetricKeySize"_s, KeyObject__SymmetricKeySize, ImplementationVisibility::Public, NoIntrinsic), 0); diff --git a/src/bun.js/bindings/NodeHTTP.cpp b/src/bun.js/bindings/NodeHTTP.cpp index 4159e7ed6e..a39efe445f 100644 --- a/src/bun.js/bindings/NodeHTTP.cpp +++ b/src/bun.js/bindings/NodeHTTP.cpp @@ -97,7 +97,7 @@ static EncodedJSValue assignHeadersFromUWebSockets(uWS::HttpRequest* request, JS auto scope = DECLARE_THROW_SCOPE(vm); auto& builtinNames = WebCore::builtinNames(vm); std::string_view fullURLStdStr = request->getFullUrl(); - String fullURL = String::fromUTF8ReplacingInvalidSequences(reinterpret_cast(fullURLStdStr.data()), fullURLStdStr.length()); + String fullURL = String::fromUTF8ReplacingInvalidSequences({ reinterpret_cast(fullURLStdStr.data()), fullURLStdStr.length() }); { PutPropertySlot slot(objectValue, false); @@ -187,7 +187,7 @@ static EncodedJSValue assignHeadersFromUWebSockets(uWS::HttpRequest* request, JS } if (methodString.isNull()) { - methodString = String::fromUTF8ReplacingInvalidSequences(reinterpret_cast(methodView.data()), methodView.length()); + methodString = String::fromUTF8ReplacingInvalidSequences({ reinterpret_cast(methodView.data()), methodView.length() }); } objectValue->put(objectValue, globalObject, builtinNames.methodPublicName(), jsString(vm, methodString), slot); RETURN_IF_EXCEPTION(scope, {}); @@ -208,7 +208,7 @@ static EncodedJSValue assignHeadersFromUWebSockets(uWS::HttpRequest* request, JS for (auto it = request->begin(); it != request->end(); ++it) { auto pair = *it; - StringView nameView = StringView(reinterpret_cast(pair.first.data()), pair.first.length()); + StringView nameView = StringView(std::span { reinterpret_cast(pair.first.data()), pair.first.length() }); LChar* data = nullptr; auto value = String::createUninitialized(pair.second.length(), data); if (pair.second.length() > 0) @@ -222,7 +222,7 @@ static EncodedJSValue assignHeadersFromUWebSockets(uWS::HttpRequest* request, JS nameString = WTF::httpHeaderNameStringImpl(name); lowercasedNameString = nameString; } else { - nameString = String(nameView.characters8(), nameView.length()); + nameString = String({ nameView.characters8(), nameView.length() }); lowercasedNameString = nameString.convertToASCIILowercase(); } @@ -403,7 +403,8 @@ JSC_DEFINE_HOST_FUNCTION(jsHTTPSetHeader, (JSGlobalObject * globalObject, CallFr return JSValue::encode(jsUndefined()); } -JSValue createNodeHTTPInternalBinding(Zig::GlobalObject* globalObject) { +JSValue createNodeHTTPInternalBinding(Zig::GlobalObject* globalObject) +{ auto* obj = constructEmptyObject(globalObject); VM& vm = globalObject->vm(); obj->putDirect( diff --git a/src/bun.js/bindings/NodeTLS.cpp b/src/bun.js/bindings/NodeTLS.cpp index 35568cee5b..e908a55088 100644 --- a/src/bun.js/bindings/NodeTLS.cpp +++ b/src/bun.js/bindings/NodeTLS.cpp @@ -13,7 +13,8 @@ using namespace JSC; extern "C" JSC::EncodedJSValue Bun__canonicalizeIP(JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); -JSC::JSValue createNodeTLSBinding(Zig::GlobalObject* globalObject) { +JSC::JSValue createNodeTLSBinding(Zig::GlobalObject* globalObject) +{ VM& vm = globalObject->vm(); auto* obj = constructEmptyObject(globalObject); @@ -25,14 +26,14 @@ JSC::JSValue createNodeTLSBinding(Zig::GlobalObject* globalObject) { auto rootCertificates = JSC::JSArray::create(vm, globalObject->arrayStructureForIndexingTypeDuringAllocation(JSC::ArrayWithContiguous), size); for (auto i = 0; i < size; i++) { auto raw = out[i]; - auto str = WTF::String::fromUTF8(raw.str, raw.len); + auto str = WTF::String::fromUTF8(std::span { raw.str, raw.len }); rootCertificates->putDirectIndex(globalObject, i, JSC::jsString(vm, str)); } obj->putDirect( - vm, JSC::PropertyName(JSC::Identifier::fromString(vm, "rootCertificates"_s)), rootCertificates, 0); + vm, JSC::PropertyName(JSC::Identifier::fromString(vm, "rootCertificates"_s)), rootCertificates, 0); obj->putDirect( - vm, JSC::PropertyName(JSC::Identifier::fromString(vm, "canonicalizeIP"_s)), JSC::JSFunction::create(vm, globalObject, 1, "canonicalizeIP"_s, Bun__canonicalizeIP, ImplementationVisibility::Public, NoIntrinsic), 0); + vm, JSC::PropertyName(JSC::Identifier::fromString(vm, "canonicalizeIP"_s)), JSC::JSFunction::create(vm, globalObject, 1, "canonicalizeIP"_s, Bun__canonicalizeIP, ImplementationVisibility::Public, NoIntrinsic), 0); return obj; } diff --git a/src/bun.js/bindings/NodeURL.cpp b/src/bun.js/bindings/NodeURL.cpp index 4f162d58fb..0977ea8a6d 100644 --- a/src/bun.js/bindings/NodeURL.cpp +++ b/src/bun.js/bindings/NodeURL.cpp @@ -65,7 +65,7 @@ JSC_DEFINE_HOST_FUNCTION(jsDomainToASCII, (JSC::JSGlobalObject * globalObject, J int32_t numCharactersConverted = uidna_nameToASCII(encoder, StringView(domain).characters16(), domain.length(), hostnameBuffer, hostnameBufferLength, &processingDetails, &error); if (U_SUCCESS(error) && !(processingDetails.errors & ~allowedNameToASCIIErrors) && numCharactersConverted) { - return JSC::JSValue::encode(JSC::jsString(vm, WTF::String(hostnameBuffer, numCharactersConverted))); + return JSC::JSValue::encode(JSC::jsString(vm, WTF::String(std::span { hostnameBuffer, static_cast(numCharactersConverted) }))); } throwTypeError(globalObject, scope, "domainToASCII failed"_s); return JSC::JSValue::encode(jsUndefined()); @@ -134,7 +134,7 @@ JSC_DEFINE_HOST_FUNCTION(jsDomainToUnicode, (JSC::JSGlobalObject * globalObject, int32_t numCharactersConverted = uidna_nameToUnicode(encoder, StringView(domain).characters16(), domain.length(), hostnameBuffer, hostnameBufferLength, &processingDetails, &error); if (U_SUCCESS(error) && !(processingDetails.errors & ~allowedNameToUnicodeErrors) && numCharactersConverted) { - return JSC::JSValue::encode(JSC::jsString(vm, WTF::String(hostnameBuffer, numCharactersConverted))); + return JSC::JSValue::encode(JSC::jsString(vm, WTF::String(std::span { hostnameBuffer, static_cast(numCharactersConverted) }))); } throwTypeError(globalObject, scope, "domainToUnicode failed"_s); return JSC::JSValue::encode(jsUndefined()); diff --git a/src/bun.js/bindings/Serialization.cpp b/src/bun.js/bindings/Serialization.cpp index a4bb53981b..ad9e254da7 100644 --- a/src/bun.js/bindings/Serialization.cpp +++ b/src/bun.js/bindings/Serialization.cpp @@ -52,7 +52,7 @@ extern "C" void Bun__SerializedScriptSlice__free(SerializedScriptValue* value) extern "C" EncodedJSValue Bun__JSValue__deserialize(JSGlobalObject* globalObject, const uint8_t* bytes, size_t size) { - Vector vector(bytes, size); + Vector vector(std::span { bytes, size }); /// ?! did i just give ownership of these bytes to JSC? auto scriptValue = SerializedScriptValue::createFromWireBytes(WTFMove(vector)); return JSValue::encode(scriptValue->deserialize(*globalObject, globalObject)); diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index 04f1a95d01..8bd08af25c 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -528,7 +528,9 @@ WTF::String Bun::formatStackTrace(JSC::VM& vm, JSC::JSGlobalObject* globalObject if (frame.hasLineAndColumnInfo()) { unsigned int thisLine = 0; unsigned int thisColumn = 0; - frame.computeLineAndColumn(thisLine, thisColumn); + LineColumn lineColumn = frame.computeLineAndColumn(); + thisLine = lineColumn.line; + thisColumn = lineColumn.column; ZigStackFrame remappedFrame; remappedFrame.position.line = thisLine; remappedFrame.position.column_start = thisColumn; diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp index 95dde77c71..210f3df7a2 100644 --- a/src/bun.js/bindings/bindings.cpp +++ b/src/bun.js/bindings/bindings.cpp @@ -1500,7 +1500,7 @@ WebCore::FetchHeaders* WebCore__FetchHeaders__createFromPicoHeaders_(const void* if (header.value.len == 0 || header.name.len == 0) continue; - StringView nameView = StringView(reinterpret_cast(header.name.ptr), header.name.len); + StringView nameView = StringView(std::span { reinterpret_cast(header.name.ptr), header.name.len }); LChar* data = nullptr; auto value = String::createUninitialized(header.value.len, data); @@ -1535,7 +1535,7 @@ WebCore::FetchHeaders* WebCore__FetchHeaders__createFromUWS(JSC__JSGlobalObject* HTTPHeaderMap map = HTTPHeaderMap(); for (const auto& header : req) { - StringView nameView = StringView(reinterpret_cast(header.first.data()), header.first.length()); + StringView nameView = StringView(std::span { reinterpret_cast(header.first.data()), header.first.length() }); LChar* data = nullptr; auto value = String::createUninitialized(header.second.length(), data); memcpy(data, header.second.data(), header.second.length()); @@ -2344,9 +2344,9 @@ JSC__JSValue JSC__JSModuleLoader__evaluate(JSC__JSGlobalObject* globalObject, co size_t arg2, const unsigned char* originUrlPtr, size_t originURLLen, const unsigned char* referrerUrlPtr, size_t referrerUrlLen, JSC__JSValue JSValue5, JSC__JSValue* arg6) { - WTF::String src = WTF::String::fromUTF8(arg1, arg2).isolatedCopy(); - WTF::URL origin = WTF::URL::fileURLWithFileSystemPath(WTF::String::fromUTF8(originUrlPtr, originURLLen)).isolatedCopy(); - WTF::URL referrer = WTF::URL::fileURLWithFileSystemPath(WTF::String::fromUTF8(referrerUrlPtr, referrerUrlLen)).isolatedCopy(); + WTF::String src = WTF::String::fromUTF8(std::span { arg1, arg2 }).isolatedCopy(); + WTF::URL origin = WTF::URL::fileURLWithFileSystemPath(WTF::String::fromUTF8(std::span { originUrlPtr, originURLLen })).isolatedCopy(); + WTF::URL referrer = WTF::URL::fileURLWithFileSystemPath(WTF::String::fromUTF8(std::span { referrerUrlPtr, referrerUrlLen })).isolatedCopy(); JSC::VM& vm = globalObject->vm(); @@ -2699,11 +2699,11 @@ JSC__JSValue ZigString__toAtomicValue(const ZigString* arg0, JSC__JSGlobalObject } if (isTaggedUTF16Ptr(arg0->ptr)) { - if (auto impl = WTF::AtomStringImpl::lookUp(reinterpret_cast(untag(arg0->ptr)), arg0->len)) { + if (auto impl = WTF::AtomStringImpl::lookUp(std::span { reinterpret_cast(untag(arg0->ptr)), arg0->len })) { return JSC::JSValue::encode(JSC::jsString(arg1->vm(), WTF::String(WTFMove(impl)))); } } else { - if (auto impl = WTF::AtomStringImpl::lookUp(untag(arg0->ptr), arg0->len)) { + if (auto impl = WTF::AtomStringImpl::lookUp(std::span { untag(arg0->ptr), arg0->len })) { return JSC::JSValue::encode(JSC::jsString(arg1->vm(), WTF::String(WTFMove(impl)))); } } @@ -2713,7 +2713,7 @@ JSC__JSValue ZigString__toAtomicValue(const ZigString* arg0, JSC__JSGlobalObject JSC__JSValue ZigString__to16BitValue(const ZigString* arg0, JSC__JSGlobalObject* arg1) { - auto str = WTF::String::fromUTF8(arg0->ptr, arg0->len); + auto str = WTF::String::fromUTF8(std::span { arg0->ptr, arg0->len }); return JSC::JSValue::encode(JSC::JSValue(JSC::jsString(arg1->vm(), str))); } @@ -3901,14 +3901,8 @@ static void populateStackFramePosition(const JSC::StackFrame* stackFrame, BunStr * avoid the CodeBlock's expressionRangeForBytecodeOffset modifications to the line and column * numbers, (we don't need the column number from it, and we'll calculate the line "fixes" * ourselves). */ - unsigned startOffset = 0; - unsigned endOffset = 0; - unsigned divotPoint = 0; - unsigned line = 0; - unsigned unusedColumn = 0; - m_codeBlock->unlinkedCodeBlock()->expressionRangeForBytecodeIndex( - bytecodeOffset, divotPoint, startOffset, endOffset, line, unusedColumn); - divotPoint += m_codeBlock->sourceOffset(); + ExpressionInfo::Entry info = m_codeBlock->unlinkedCodeBlock()->expressionInfoForBytecodeIndex(bytecodeOffset); + info.divot += m_codeBlock->sourceOffset(); // TODO: evaluate if using the API from UnlinkedCodeBlock can be used instead of iterating // through source text. @@ -3919,19 +3913,19 @@ static void populateStackFramePosition(const JSC::StackFrame* stackFrame, BunStr * simpler (and what CodeBlock::expressionRangeForBytecodeOffset does). This is because * firstLineColumnOffset values seems different from what we expect (according to v8's tests) * and I haven't dove into the relevant parts in JSC (yet) to figure out why. */ - unsigned columnOffset = line ? 0 : m_codeBlock->source().startColumn().zeroBasedInt(); + unsigned columnOffset = info.lineColumn.line ? 0 : m_codeBlock->source().startColumn().zeroBasedInt(); // "Fix" the line number JSC::ScriptExecutable* executable = m_codeBlock->ownerExecutable(); if (std::optional overrideLine = executable->overrideLineNumber(m_codeBlock->vm())) { - line = overrideLine.value(); + info.lineColumn.line = overrideLine.value(); } else { - line += executable->firstLine(); + info.lineColumn.line += executable->firstLine(); } // Calculate the staring\ending offsets of the entire expression - int expressionStart = divotPoint - startOffset; - int expressionStop = divotPoint + endOffset; + int expressionStart = info.divot - info.startOffset; + int expressionStop = info.divot + info.endOffset; if (expressionStop < 1 || expressionStart > static_cast(sourceString.length())) { return; } @@ -3953,7 +3947,7 @@ static void populateStackFramePosition(const JSC::StackFrame* stackFrame, BunStr // Most of the time, when you look at a stack trace, you want a couple lines above source_lines[0] = Bun::toStringRef(sourceString.substring(lineStart, lineStop - lineStart).toStringWithoutCopying()); - source_line_numbers[0] = line - 1; + source_line_numbers[0] = info.lineColumn.line - 1; if (lineStart > 0) { auto byte_offset_in_source_string = lineStart - 1; @@ -3979,7 +3973,7 @@ static void populateStackFramePosition(const JSC::StackFrame* stackFrame, BunStr // We are at the beginning of the line source_lines[source_line_i] = Bun::toStringRef(sourceString.substring(byte_offset_in_source_string, end_of_line_offset - byte_offset_in_source_string + 1).toStringWithoutCopying()); - source_line_numbers[source_line_i] = line - source_line_i - 1; + source_line_numbers[source_line_i] = info.lineColumn.line - source_line_i - 1; source_line_i++; remaining_lines_to_grab--; @@ -4001,7 +3995,7 @@ static void populateStackFramePosition(const JSC::StackFrame* stackFrame, BunStr */ position->expression_start = expressionStart; position->expression_stop = expressionStop; - position->line = WTF::OrdinalNumber::fromOneBasedInt(static_cast(line)).zeroBasedInt(); + position->line = WTF::OrdinalNumber::fromOneBasedInt(static_cast(info.lineColumn.line)).zeroBasedInt(); position->column_start = (expressionStart - lineStart) + columnOffset; position->column_stop = position->column_start + (expressionStop - expressionStart); position->line_start = lineStart; @@ -4433,7 +4427,7 @@ void JSC__JSValue__getClassName(JSC__JSValue JSValue0, JSC__JSGlobalObject* arg1 } const char* ptr = cell->className(); - auto view = WTF::StringView(ptr, strlen(ptr)); + auto view = WTF::StringView(std::span { ptr, strlen(ptr) }); // Fallback to .name if className is empty if (view.length() == 0 || StringView(String(function_string_view)) == view) { diff --git a/src/bun.js/bindings/helpers.h b/src/bun.js/bindings/helpers.h index ec30f32e19..f92362dc55 100644 --- a/src/bun.js/bindings/helpers.h +++ b/src/bun.js/bindings/helpers.h @@ -142,7 +142,7 @@ static const WTF::String toString(ZigString str) return WTF::String(); } if (UNLIKELY(isTaggedUTF8Ptr(str.ptr))) { - return WTF::String::fromUTF8(untag(str.ptr), str.len); + return WTF::String::fromUTF8(std::span { untag(str.ptr), str.len }); } if (UNLIKELY(isTaggedExternalPtr(str.ptr))) { @@ -174,7 +174,7 @@ static const WTF::String toString(ZigString str, StringPointer ptr) return WTF::String(); } if (UNLIKELY(isTaggedUTF8Ptr(str.ptr))) { - return WTF::String::fromUTF8ReplacingInvalidSequences(&untag(str.ptr)[ptr.off], ptr.len); + return WTF::String::fromUTF8ReplacingInvalidSequences(std::span { &untag(str.ptr)[ptr.off], ptr.len }); } return !isTaggedUTF16Ptr(str.ptr) @@ -189,13 +189,13 @@ static const WTF::String toStringCopy(ZigString str, StringPointer ptr) return WTF::String(); } if (UNLIKELY(isTaggedUTF8Ptr(str.ptr))) { - return WTF::String::fromUTF8ReplacingInvalidSequences(&untag(str.ptr)[ptr.off], ptr.len); + return WTF::String::fromUTF8ReplacingInvalidSequences(std::span { &untag(str.ptr)[ptr.off], ptr.len }); } return !isTaggedUTF16Ptr(str.ptr) - ? WTF::String(WTF::StringImpl::create(&untag(str.ptr)[ptr.off], ptr.len)) + ? WTF::String(WTF::StringImpl::create(std::span { &untag(str.ptr)[ptr.off], ptr.len })) : WTF::String(WTF::StringImpl::create( - &reinterpret_cast(untag(str.ptr))[ptr.off], ptr.len)); + std::span { &reinterpret_cast(untag(str.ptr))[ptr.off], ptr.len })); } static const WTF::String toStringCopy(ZigString str) @@ -204,7 +204,7 @@ static const WTF::String toStringCopy(ZigString str) return WTF::String(); } if (UNLIKELY(isTaggedUTF8Ptr(str.ptr))) { - return WTF::String::fromUTF8ReplacingInvalidSequences(untag(str.ptr), str.len); + return WTF::String::fromUTF8ReplacingInvalidSequences(std::span { untag(str.ptr), str.len }); } if (isTaggedUTF16Ptr(str.ptr)) { @@ -311,7 +311,7 @@ static ZigString toZigString(JSC::Identifier* str, JSC::JSGlobalObject* global) static WTF::StringView toStringView(ZigString str) { - return WTF::StringView(untag(str.ptr), str.len); + return WTF::StringView(std::span { untag(str.ptr), str.len }); } static void throwException(JSC::ThrowScope& scope, ZigErrorType err, JSC::JSGlobalObject* global) @@ -346,11 +346,11 @@ static const WTF::String toStringStatic(ZigString str) } if (isTaggedUTF16Ptr(str.ptr)) { - return WTF::String(AtomStringImpl::add(reinterpret_cast(untag(str.ptr)), str.len)); + return WTF::String(AtomStringImpl::add(std::span { reinterpret_cast(untag(str.ptr)), str.len })); } return WTF::String(AtomStringImpl::add( - reinterpret_cast(untag(str.ptr)), str.len)); + std::span { reinterpret_cast(untag(str.ptr)), str.len })); } static JSC::JSValue getErrorInstance(const ZigString* str, JSC__JSGlobalObject* globalObject) diff --git a/src/bun.js/bindings/napi.cpp b/src/bun.js/bindings/napi.cpp index 2a46cc676f..fb4de6d9b8 100644 --- a/src/bun.js/bindings/napi.cpp +++ b/src/bun.js/bindings/napi.cpp @@ -406,7 +406,7 @@ static void defineNapiProperty(Zig::GlobalObject* globalObject, JSC::JSObject* t if (property.utf8name != nullptr) { size_t len = strlen(property.utf8name); if (len > 0) { - return JSC::Identifier::fromString(vm, WTF::String::fromUTF8(property.utf8name, len).isolatedCopy()); + return JSC::Identifier::fromString(vm, WTF::String::fromUTF8({ property.utf8name, len }).isolatedCopy()); } } @@ -616,7 +616,7 @@ extern "C" napi_status napi_set_named_property(napi_env env, napi_value object, JSC::EnsureStillAliveScope ensureAlive(jsValue); JSC::EnsureStillAliveScope ensureAlive2(target); - auto nameStr = WTF::String::fromUTF8(utf8name, strlen(utf8name)); + auto nameStr = WTF::String::fromUTF8({ utf8name, strlen(utf8name) }); auto identifier = JSC::Identifier::fromString(vm, WTFMove(nameStr)); auto scope = DECLARE_CATCH_SCOPE(vm); @@ -668,7 +668,7 @@ extern "C" napi_status napi_create_arraybuffer(napi_env env, // because we can't guarantee the lifetime of it #define PROPERTY_NAME_FROM_UTF8(identifierName) \ size_t utf8Len = strlen(utf8name); \ - JSC::PropertyName identifierName = LIKELY(charactersAreAllASCII(reinterpret_cast(utf8name), utf8Len)) ? JSC::PropertyName(JSC::Identifier::fromString(vm, WTF::String(WTF::StringImpl::createWithoutCopying(utf8name, utf8Len)))) : JSC::PropertyName(JSC::Identifier::fromString(vm, WTF::String::fromUTF8(utf8name))); + JSC::PropertyName identifierName = LIKELY(charactersAreAllASCII(std::span { reinterpret_cast(utf8name), utf8Len })) ? JSC::PropertyName(JSC::Identifier::fromString(vm, WTF::String(WTF::StringImpl::createWithoutCopying(utf8name, utf8Len)))) : JSC::PropertyName(JSC::Identifier::fromString(vm, WTF::String::fromUTF8(utf8name))); extern "C" napi_status napi_has_named_property(napi_env env, napi_value object, const char* utf8name, @@ -985,7 +985,7 @@ extern "C" napi_status napi_create_function(napi_env env, const char* utf8name, auto name = WTF::String(); if (utf8name != nullptr) { - name = WTF::String::fromUTF8(utf8name, length == NAPI_AUTO_LENGTH ? strlen(utf8name) : length); + name = WTF::String::fromUTF8({ utf8name, length == NAPI_AUTO_LENGTH ? strlen(utf8name) : length }); } auto method = reinterpret_cast(cb); @@ -1366,7 +1366,7 @@ extern "C" napi_status node_api_symbol_for(napi_env env, return napi_invalid_arg; } - auto description = WTF::String::fromUTF8(utf8description, length == NAPI_AUTO_LENGTH ? strlen(utf8description) : length); + auto description = WTF::String::fromUTF8({ utf8description, length == NAPI_AUTO_LENGTH ? strlen(utf8description) : length }); *result = toNapi(JSC::Symbol::create(vm, vm.symbolRegistry().symbolForKey(description))); return napi_ok; @@ -1670,7 +1670,7 @@ NapiClass* NapiClass::create(VM& vm, Zig::GlobalObject* globalObject, const char size_t property_count, const napi_property_descriptor* properties) { - WTF::String name = WTF::String::fromUTF8(utf8name, length).isolatedCopy(); + WTF::String name = WTF::String::fromUTF8({ utf8name, length }).isolatedCopy(); NativeExecutable* executable = vm.getHostFunction(NapiClass_ConstructorFunction, ImplementationVisibility::Public, NapiClass_ConstructorFunction, name); Structure* structure = globalObject->NapiClassStructure(); NapiClass* napiClass = new (NotNull, allocateCell(vm)) NapiClass(vm, executable, globalObject, structure); diff --git a/src/bun.js/bindings/napi_external.h b/src/bun.js/bindings/napi_external.h index c4826b3037..c82e7f597f 100644 --- a/src/bun.js/bindings/napi_external.h +++ b/src/bun.js/bindings/napi_external.h @@ -63,7 +63,9 @@ public: if (!stackTrace->isEmpty()) { for (auto& frame : *stackTrace) { if (frame.hasLineAndColumnInfo()) { - frame.computeLineAndColumn(accessor->sourceOriginLine, accessor->sourceOriginColumn); + LineColumn lineColumn = frame.computeLineAndColumn(); + accessor->sourceOriginLine = lineColumn.line; + accessor->sourceOriginColumn = lineColumn.column; break; } } diff --git a/src/bun.js/bindings/sqlite/JSSQLStatement.cpp b/src/bun.js/bindings/sqlite/JSSQLStatement.cpp index b1213f6a96..c0b1746023 100644 --- a/src/bun.js/bindings/sqlite/JSSQLStatement.cpp +++ b/src/bun.js/bindings/sqlite/JSSQLStatement.cpp @@ -452,7 +452,7 @@ static void initializeColumnNames(JSC::JSGlobalObject* lexicalGlobalObject, JSSQ break; } - columnNames->add(Identifier::fromString(vm, WTF::String::fromUTF8(name, len))); + columnNames->add(Identifier::fromString(vm, WTF::String::fromUTF8({ name, len }))); } if (LIKELY(!anyHoles)) { @@ -494,7 +494,7 @@ static void initializeColumnNames(JSC::JSGlobalObject* lexicalGlobalObject, JSSQ if (len == 0) break; - auto wtfString = WTF::String::fromUTF8(name, len); + auto wtfString = WTF::String::fromUTF8({ name, len }); auto str = JSValue(jsString(vm, wtfString)); auto key = str.toPropertyKey(lexicalGlobalObject); JSC::JSValue primitive = JSC::jsUndefined(); @@ -1371,7 +1371,7 @@ static inline JSC::JSValue constructResultObject(JSC::JSGlobalObject* lexicalGlo value = JSC::JSValue::decode(Bun__encoding__toStringUTF8(text, len, lexicalGlobalObject)); break; } else { - value = jsString(vm, WTF::String::fromUTF8(text, len)); + value = jsString(vm, WTF::String::fromUTF8({ text, len })); break; } } @@ -1428,7 +1428,7 @@ static inline JSC::JSValue constructResultObject(JSC::JSGlobalObject* lexicalGlo continue; } - result->putDirect(vm, name, jsString(vm, WTF::String::fromUTF8(text, len)), 0); + result->putDirect(vm, name, jsString(vm, WTF::String::fromUTF8({ text, len })), 0); break; } case SQLITE_BLOB: { @@ -1484,7 +1484,7 @@ static inline JSC::JSArray* constructResultRow(JSC::JSGlobalObject* lexicalGloba result->putDirectIndex(lexicalGlobalObject, i, jsEmptyString(vm)); continue; } - result->putDirectIndex(lexicalGlobalObject, i, len < 64 ? jsString(vm, WTF::String::fromUTF8(text, len)) : JSC::JSValue::decode(Bun__encoding__toStringUTF8(text, len, lexicalGlobalObject))); + result->putDirectIndex(lexicalGlobalObject, i, len < 64 ? jsString(vm, WTF::String::fromUTF8({ text, len })) : JSC::JSValue::decode(Bun__encoding__toStringUTF8(text, len, lexicalGlobalObject))); break; } case SQLITE_BLOB: { @@ -1809,7 +1809,7 @@ JSC_DEFINE_HOST_FUNCTION(jsSQLStatementToStringFunction, (JSC::JSGlobalObject * RELEASE_AND_RETURN(scope, JSValue::encode(jsEmptyString(vm))); } size_t length = strlen(string); - JSString* jsString = JSC::jsString(vm, WTF::String::fromUTF8(string, length)); + JSString* jsString = JSC::jsString(vm, WTF::String::fromUTF8({ string, length })); sqlite3_free(string); RELEASE_AND_RETURN(scope, JSValue::encode(jsString)); @@ -1969,8 +1969,7 @@ JSValue createJSSQLStatementConstructor(Zig::GlobalObject* globalObject) return JSSQLStatementConstructor::create( vm, globalObject, - JSSQLStatementConstructor::createStructure(vm, globalObject, globalObject->m_functionPrototype.get()) - ); + JSSQLStatementConstructor::createStructure(vm, globalObject, globalObject->m_functionPrototype.get())); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcore/HTTPHeaderNames.cpp b/src/bun.js/bindings/webcore/HTTPHeaderNames.cpp index f34a22f367..207973a73d 100644 --- a/src/bun.js/bindings/webcore/HTTPHeaderNames.cpp +++ b/src/bun.js/bindings/webcore/HTTPHeaderNames.cpp @@ -1,29 +1,29 @@ /* C++ code produced by gperf version 3.1 */ /* Command-line: /opt/homebrew/bin/gperf --key-positions='*' -D -n -s 2 --output-file=HTTPHeaderNames.cpp HTTPHeaderNames.gperf */ -#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ - && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ - && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ - && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ - && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ - && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ - && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ - && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ - && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ - && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ - && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ - && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ - && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ - && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ - && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ - && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ - && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ - && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ - && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ - && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ - && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ - && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ - && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ + && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ + && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ + && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ + && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ + && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ + && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ + && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ + && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ + && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ + && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ + && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ + && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ + && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ + && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ + && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ + && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ + && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ + && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ + && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ + && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ + && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) /* The character set is not based on ISO-646. */ #error "gperf generated tables don't work with this execution character set. Please report a bug to ." #endif @@ -168,34 +168,31 @@ static const struct HeaderNameString { { "X-XSS-Protection", 16 }, }; - #line 150 "HTTPHeaderNames.gperf" struct HeaderNameHashEntry { const char* name; HTTPHeaderName headerName; }; -enum - { +enum { TOTAL_KEYWORDS = 93, MIN_WORD_LENGTH = 2, MAX_WORD_LENGTH = 40, MIN_HASH_VALUE = 5, MAX_HASH_VALUE = 709 - }; +}; /* maximum key range = 705, duplicates = 0 */ #ifndef GPERF_DOWNCASE #define GPERF_DOWNCASE 1 -static unsigned char gperf_downcase[256] = - { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, +static unsigned char gperf_downcase[256] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, @@ -207,392 +204,386 @@ static unsigned char gperf_downcase[256] = 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255 - }; +}; #endif #ifndef GPERF_CASE_STRNCMP #define GPERF_CASE_STRNCMP 1 static int -gperf_case_strncmp (const char *s1, const char *s2, size_t n) +gperf_case_strncmp(const char* s1, const char* s2, size_t n) { - for (; n > 0;) - { - unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; - unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; - if (c1 != 0 && c1 == c2) - { - n--; - continue; + for (; n > 0;) { + unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; + unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; + if (c1 != 0 && c1 == c2) { + n--; + continue; } - return (int)c1 - (int)c2; + return (int)c1 - (int)c2; } - return 0; + return 0; } #endif -class HTTPHeaderNamesHash -{ +class HTTPHeaderNamesHash { private: - static inline unsigned int header_name_hash_function (const char *str, size_t len); + static inline unsigned int header_name_hash_function(const char* str, size_t len); + public: - static const struct HeaderNameHashEntry *findHeaderNameImpl (const char *str, size_t len); + static const struct HeaderNameHashEntry* findHeaderNameImpl(const char* str, size_t len); }; inline unsigned int -HTTPHeaderNamesHash::header_name_hash_function (const char *str, size_t len) +HTTPHeaderNamesHash::header_name_hash_function(const char* str, size_t len) { - static const unsigned short asso_values[] = - { - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 0, 710, 710, 710, 710, + static const unsigned short asso_values[] = { + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 0, 710, 710, 710, 710, 5, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 0, 35, 0, 95, 0, - 120, 10, 210, 5, 710, 4, 45, 115, 5, 0, - 30, 0, 5, 20, 5, 25, 195, 65, 115, 30, - 50, 710, 710, 710, 710, 710, 710, 0, 35, 0, - 95, 0, 120, 10, 210, 5, 710, 4, 45, 115, - 5, 0, 30, 0, 5, 20, 5, 25, 195, 65, - 115, 30, 50, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 710, 710, 710, 710 + 710, 710, 710, 710, 710, 0, 35, 0, 95, 0, + 120, 10, 210, 5, 710, 4, 45, 115, 5, 0, + 30, 0, 5, 20, 5, 25, 195, 65, 115, 30, + 50, 710, 710, 710, 710, 710, 710, 0, 35, 0, + 95, 0, 120, 10, 210, 5, 710, 4, 45, 115, + 5, 0, 30, 0, 5, 20, 5, 25, 195, 65, + 115, 30, 50, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710 }; - unsigned int hval = 0; + unsigned int hval = 0; - switch (len) - { - default: + switch (len) { + default: hval += asso_values[static_cast(str[39])]; - /*FALLTHROUGH*/ - case 39: + /*FALLTHROUGH*/ + case 39: hval += asso_values[static_cast(str[38])]; - /*FALLTHROUGH*/ - case 38: + /*FALLTHROUGH*/ + case 38: hval += asso_values[static_cast(str[37])]; - /*FALLTHROUGH*/ - case 37: + /*FALLTHROUGH*/ + case 37: hval += asso_values[static_cast(str[36])]; - /*FALLTHROUGH*/ - case 36: + /*FALLTHROUGH*/ + case 36: hval += asso_values[static_cast(str[35])]; - /*FALLTHROUGH*/ - case 35: + /*FALLTHROUGH*/ + case 35: hval += asso_values[static_cast(str[34])]; - /*FALLTHROUGH*/ - case 34: + /*FALLTHROUGH*/ + case 34: hval += asso_values[static_cast(str[33])]; - /*FALLTHROUGH*/ - case 33: + /*FALLTHROUGH*/ + case 33: hval += asso_values[static_cast(str[32])]; - /*FALLTHROUGH*/ - case 32: + /*FALLTHROUGH*/ + case 32: hval += asso_values[static_cast(str[31])]; - /*FALLTHROUGH*/ - case 31: + /*FALLTHROUGH*/ + case 31: hval += asso_values[static_cast(str[30])]; - /*FALLTHROUGH*/ - case 30: + /*FALLTHROUGH*/ + case 30: hval += asso_values[static_cast(str[29])]; - /*FALLTHROUGH*/ - case 29: + /*FALLTHROUGH*/ + case 29: hval += asso_values[static_cast(str[28])]; - /*FALLTHROUGH*/ - case 28: + /*FALLTHROUGH*/ + case 28: hval += asso_values[static_cast(str[27])]; - /*FALLTHROUGH*/ - case 27: + /*FALLTHROUGH*/ + case 27: hval += asso_values[static_cast(str[26])]; - /*FALLTHROUGH*/ - case 26: + /*FALLTHROUGH*/ + case 26: hval += asso_values[static_cast(str[25])]; - /*FALLTHROUGH*/ - case 25: + /*FALLTHROUGH*/ + case 25: hval += asso_values[static_cast(str[24])]; - /*FALLTHROUGH*/ - case 24: + /*FALLTHROUGH*/ + case 24: hval += asso_values[static_cast(str[23])]; - /*FALLTHROUGH*/ - case 23: + /*FALLTHROUGH*/ + case 23: hval += asso_values[static_cast(str[22])]; - /*FALLTHROUGH*/ - case 22: + /*FALLTHROUGH*/ + case 22: hval += asso_values[static_cast(str[21])]; - /*FALLTHROUGH*/ - case 21: + /*FALLTHROUGH*/ + case 21: hval += asso_values[static_cast(str[20])]; - /*FALLTHROUGH*/ - case 20: + /*FALLTHROUGH*/ + case 20: hval += asso_values[static_cast(str[19])]; - /*FALLTHROUGH*/ - case 19: + /*FALLTHROUGH*/ + case 19: hval += asso_values[static_cast(str[18])]; - /*FALLTHROUGH*/ - case 18: + /*FALLTHROUGH*/ + case 18: hval += asso_values[static_cast(str[17])]; - /*FALLTHROUGH*/ - case 17: + /*FALLTHROUGH*/ + case 17: hval += asso_values[static_cast(str[16])]; - /*FALLTHROUGH*/ - case 16: + /*FALLTHROUGH*/ + case 16: hval += asso_values[static_cast(str[15])]; - /*FALLTHROUGH*/ - case 15: + /*FALLTHROUGH*/ + case 15: hval += asso_values[static_cast(str[14])]; - /*FALLTHROUGH*/ - case 14: + /*FALLTHROUGH*/ + case 14: hval += asso_values[static_cast(str[13])]; - /*FALLTHROUGH*/ - case 13: + /*FALLTHROUGH*/ + case 13: hval += asso_values[static_cast(str[12])]; - /*FALLTHROUGH*/ - case 12: + /*FALLTHROUGH*/ + case 12: hval += asso_values[static_cast(str[11])]; - /*FALLTHROUGH*/ - case 11: + /*FALLTHROUGH*/ + case 11: hval += asso_values[static_cast(str[10])]; - /*FALLTHROUGH*/ - case 10: + /*FALLTHROUGH*/ + case 10: hval += asso_values[static_cast(str[9])]; - /*FALLTHROUGH*/ - case 9: + /*FALLTHROUGH*/ + case 9: hval += asso_values[static_cast(str[8])]; - /*FALLTHROUGH*/ - case 8: + /*FALLTHROUGH*/ + case 8: hval += asso_values[static_cast(str[7])]; - /*FALLTHROUGH*/ - case 7: + /*FALLTHROUGH*/ + case 7: hval += asso_values[static_cast(str[6])]; - /*FALLTHROUGH*/ - case 6: + /*FALLTHROUGH*/ + case 6: hval += asso_values[static_cast(str[5])]; - /*FALLTHROUGH*/ - case 5: + /*FALLTHROUGH*/ + case 5: hval += asso_values[static_cast(str[4])]; - /*FALLTHROUGH*/ - case 4: + /*FALLTHROUGH*/ + case 4: hval += asso_values[static_cast(str[3])]; - /*FALLTHROUGH*/ - case 3: + /*FALLTHROUGH*/ + case 3: hval += asso_values[static_cast(str[2])]; - /*FALLTHROUGH*/ - case 2: + /*FALLTHROUGH*/ + case 2: hval += asso_values[static_cast(str[1])]; - /*FALLTHROUGH*/ - case 1: + /*FALLTHROUGH*/ + case 1: hval += asso_values[static_cast(str[0])]; break; } - return hval; + return hval; } -static const struct HeaderNameHashEntry header_name_wordlist[] = - { +static const struct HeaderNameHashEntry header_name_wordlist[] = { #line 238 "HTTPHeaderNames.gperf" - {"TE", HTTPHeaderName::TE}, + { "TE", HTTPHeaderName::TE }, #line 186 "HTTPHeaderNames.gperf" - {"Cookie", HTTPHeaderName::Cookie}, + { "Cookie", HTTPHeaderName::Cookie }, #line 173 "HTTPHeaderNames.gperf" - {"Age", HTTPHeaderName::Age}, + { "Age", HTTPHeaderName::Age }, #line 187 "HTTPHeaderNames.gperf" - {"Cookie2", HTTPHeaderName::Cookie2}, + { "Cookie2", HTTPHeaderName::Cookie2 }, #line 196 "HTTPHeaderNames.gperf" - {"ETag", HTTPHeaderName::ETag}, + { "ETag", HTTPHeaderName::ETag }, #line 218 "HTTPHeaderNames.gperf" - {"Range", HTTPHeaderName::Range}, + { "Range", HTTPHeaderName::Range }, #line 176 "HTTPHeaderNames.gperf" - {"Connection", HTTPHeaderName::Connection}, + { "Connection", HTTPHeaderName::Connection }, #line 212 "HTTPHeaderNames.gperf" - {"Origin", HTTPHeaderName::Origin}, + { "Origin", HTTPHeaderName::Origin }, #line 234 "HTTPHeaderNames.gperf" - {"Set-Cookie", HTTPHeaderName::SetCookie}, + { "Set-Cookie", HTTPHeaderName::SetCookie }, #line 160 "HTTPHeaderNames.gperf" - {"Accept", HTTPHeaderName::Accept}, + { "Accept", HTTPHeaderName::Accept }, #line 235 "HTTPHeaderNames.gperf" - {"Set-Cookie2", HTTPHeaderName::SetCookie2}, + { "Set-Cookie2", HTTPHeaderName::SetCookie2 }, #line 182 "HTTPHeaderNames.gperf" - {"Content-Range", HTTPHeaderName::ContentRange}, + { "Content-Range", HTTPHeaderName::ContentRange }, #line 222 "HTTPHeaderNames.gperf" - {"Report-To", HTTPHeaderName::ReportTo}, + { "Report-To", HTTPHeaderName::ReportTo }, #line 214 "HTTPHeaderNames.gperf" - {"Ping-To", HTTPHeaderName::PingTo}, + { "Ping-To", HTTPHeaderName::PingTo }, #line 210 "HTTPHeaderNames.gperf" - {"Link", HTTPHeaderName::Link}, + { "Link", HTTPHeaderName::Link }, #line 211 "HTTPHeaderNames.gperf" - {"Location", HTTPHeaderName::Location}, + { "Location", HTTPHeaderName::Location }, #line 240 "HTTPHeaderNames.gperf" - {"Trailer", HTTPHeaderName::Trailer}, + { "Trailer", HTTPHeaderName::Trailer }, #line 244 "HTTPHeaderNames.gperf" - {"User-Agent", HTTPHeaderName::UserAgent}, + { "User-Agent", HTTPHeaderName::UserAgent }, #line 164 "HTTPHeaderNames.gperf" - {"Accept-Ranges", HTTPHeaderName::AcceptRanges}, + { "Accept-Ranges", HTTPHeaderName::AcceptRanges }, #line 181 "HTTPHeaderNames.gperf" - {"Content-Location", HTTPHeaderName::ContentLocation}, + { "Content-Location", HTTPHeaderName::ContentLocation }, #line 185 "HTTPHeaderNames.gperf" - {"Content-Type", HTTPHeaderName::ContentType}, + { "Content-Type", HTTPHeaderName::ContentType }, #line 194 "HTTPHeaderNames.gperf" - {"Date", HTTPHeaderName::Date}, + { "Date", HTTPHeaderName::Date }, #line 193 "HTTPHeaderNames.gperf" - {"DNT", HTTPHeaderName::DNT}, + { "DNT", HTTPHeaderName::DNT }, #line 217 "HTTPHeaderNames.gperf" - {"Purpose", HTTPHeaderName::Purpose}, + { "Purpose", HTTPHeaderName::Purpose }, #line 179 "HTTPHeaderNames.gperf" - {"Content-Language", HTTPHeaderName::ContentLanguage}, + { "Content-Language", HTTPHeaderName::ContentLanguage }, #line 163 "HTTPHeaderNames.gperf" - {"Accept-Language", HTTPHeaderName::AcceptLanguage}, + { "Accept-Language", HTTPHeaderName::AcceptLanguage }, #line 219 "HTTPHeaderNames.gperf" - {"Referer", HTTPHeaderName::Referer}, + { "Referer", HTTPHeaderName::Referer }, #line 178 "HTTPHeaderNames.gperf" - {"Content-Encoding", HTTPHeaderName::ContentEncoding}, + { "Content-Encoding", HTTPHeaderName::ContentEncoding }, #line 205 "HTTPHeaderNames.gperf" - {"If-Range", HTTPHeaderName::IfRange}, + { "If-Range", HTTPHeaderName::IfRange }, #line 197 "HTTPHeaderNames.gperf" - {"Expect", HTTPHeaderName::Expect}, + { "Expect", HTTPHeaderName::Expect }, #line 162 "HTTPHeaderNames.gperf" - {"Accept-Encoding", HTTPHeaderName::AcceptEncoding}, + { "Accept-Encoding", HTTPHeaderName::AcceptEncoding }, #line 215 "HTTPHeaderNames.gperf" - {"Pragma", HTTPHeaderName::Pragma}, + { "Pragma", HTTPHeaderName::Pragma }, #line 242 "HTTPHeaderNames.gperf" - {"Upgrade", HTTPHeaderName::Upgrade}, + { "Upgrade", HTTPHeaderName::Upgrade }, #line 200 "HTTPHeaderNames.gperf" - {"Icy-MetaInt", HTTPHeaderName::IcyMetaInt}, + { "Icy-MetaInt", HTTPHeaderName::IcyMetaInt }, #line 198 "HTTPHeaderNames.gperf" - {"Expires", HTTPHeaderName::Expires}, + { "Expires", HTTPHeaderName::Expires }, #line 227 "HTTPHeaderNames.gperf" - {"Sec-WebSocket-Key", HTTPHeaderName::SecWebSocketKey}, + { "Sec-WebSocket-Key", HTTPHeaderName::SecWebSocketKey }, #line 225 "HTTPHeaderNames.gperf" - {"Sec-WebSocket-Accept", HTTPHeaderName::SecWebSocketAccept}, + { "Sec-WebSocket-Accept", HTTPHeaderName::SecWebSocketAccept }, #line 236 "HTTPHeaderNames.gperf" - {"SourceMap", HTTPHeaderName::SourceMap}, + { "SourceMap", HTTPHeaderName::SourceMap }, #line 246 "HTTPHeaderNames.gperf" - {"Via", HTTPHeaderName::Via}, + { "Via", HTTPHeaderName::Via }, #line 237 "HTTPHeaderNames.gperf" - {"Strict-Transport-Security", HTTPHeaderName::StrictTransportSecurity}, + { "Strict-Transport-Security", HTTPHeaderName::StrictTransportSecurity }, #line 177 "HTTPHeaderNames.gperf" - {"Content-Disposition", HTTPHeaderName::ContentDisposition}, + { "Content-Disposition", HTTPHeaderName::ContentDisposition }, #line 183 "HTTPHeaderNames.gperf" - {"Content-Security-Policy", HTTPHeaderName::ContentSecurityPolicy}, + { "Content-Security-Policy", HTTPHeaderName::ContentSecurityPolicy }, #line 190 "HTTPHeaderNames.gperf" - {"Cross-Origin-Opener-Policy", HTTPHeaderName::CrossOriginOpenerPolicy}, + { "Cross-Origin-Opener-Policy", HTTPHeaderName::CrossOriginOpenerPolicy }, #line 245 "HTTPHeaderNames.gperf" - {"Vary", HTTPHeaderName::Vary}, + { "Vary", HTTPHeaderName::Vary }, #line 228 "HTTPHeaderNames.gperf" - {"Sec-WebSocket-Protocol", HTTPHeaderName::SecWebSocketProtocol}, + { "Sec-WebSocket-Protocol", HTTPHeaderName::SecWebSocketProtocol }, #line 199 "HTTPHeaderNames.gperf" - {"Host", HTTPHeaderName::Host}, + { "Host", HTTPHeaderName::Host }, #line 192 "HTTPHeaderNames.gperf" - {"Cross-Origin-Resource-Policy", HTTPHeaderName::CrossOriginResourcePolicy}, + { "Cross-Origin-Resource-Policy", HTTPHeaderName::CrossOriginResourcePolicy }, #line 220 "HTTPHeaderNames.gperf" - {"Referrer-Policy", HTTPHeaderName::ReferrerPolicy}, + { "Referrer-Policy", HTTPHeaderName::ReferrerPolicy }, #line 201 "HTTPHeaderNames.gperf" - {"Icy-Metadata", HTTPHeaderName::IcyMetadata}, + { "Icy-Metadata", HTTPHeaderName::IcyMetadata }, #line 247 "HTTPHeaderNames.gperf" - {"X-Content-Type-Options", HTTPHeaderName::XContentTypeOptions}, + { "X-Content-Type-Options", HTTPHeaderName::XContentTypeOptions }, #line 175 "HTTPHeaderNames.gperf" - {"Cache-Control", HTTPHeaderName::CacheControl}, + { "Cache-Control", HTTPHeaderName::CacheControl }, #line 161 "HTTPHeaderNames.gperf" - {"Accept-Charset", HTTPHeaderName::AcceptCharset}, + { "Accept-Charset", HTTPHeaderName::AcceptCharset }, #line 207 "HTTPHeaderNames.gperf" - {"Keep-Alive", HTTPHeaderName::KeepAlive}, + { "Keep-Alive", HTTPHeaderName::KeepAlive }, #line 241 "HTTPHeaderNames.gperf" - {"Transfer-Encoding", HTTPHeaderName::TransferEncoding}, + { "Transfer-Encoding", HTTPHeaderName::TransferEncoding }, #line 168 "HTTPHeaderNames.gperf" - {"Access-Control-Allow-Origin", HTTPHeaderName::AccessControlAllowOrigin}, + { "Access-Control-Allow-Origin", HTTPHeaderName::AccessControlAllowOrigin }, #line 213 "HTTPHeaderNames.gperf" - {"Ping-From", HTTPHeaderName::PingFrom}, + { "Ping-From", HTTPHeaderName::PingFrom }, #line 180 "HTTPHeaderNames.gperf" - {"Content-Length", HTTPHeaderName::ContentLength}, + { "Content-Length", HTTPHeaderName::ContentLength }, #line 243 "HTTPHeaderNames.gperf" - {"Upgrade-Insecure-Requests", HTTPHeaderName::UpgradeInsecureRequests}, + { "Upgrade-Insecure-Requests", HTTPHeaderName::UpgradeInsecureRequests }, #line 231 "HTTPHeaderNames.gperf" - {"Service-Worker", HTTPHeaderName::ServiceWorker}, + { "Service-Worker", HTTPHeaderName::ServiceWorker }, #line 250 "HTTPHeaderNames.gperf" - {"X-SourceMap", HTTPHeaderName::XSourceMap}, + { "X-SourceMap", HTTPHeaderName::XSourceMap }, #line 174 "HTTPHeaderNames.gperf" - {"Authorization", HTTPHeaderName::Authorization}, + { "Authorization", HTTPHeaderName::Authorization }, #line 226 "HTTPHeaderNames.gperf" - {"Sec-WebSocket-Extensions", HTTPHeaderName::SecWebSocketExtensions}, + { "Sec-WebSocket-Extensions", HTTPHeaderName::SecWebSocketExtensions }, #line 252 "HTTPHeaderNames.gperf" - {"X-XSS-Protection", HTTPHeaderName::XXSSProtection}, + { "X-XSS-Protection", HTTPHeaderName::XXSSProtection }, #line 239 "HTTPHeaderNames.gperf" - {"Timing-Allow-Origin", HTTPHeaderName::TimingAllowOrigin}, + { "Timing-Allow-Origin", HTTPHeaderName::TimingAllowOrigin }, #line 170 "HTTPHeaderNames.gperf" - {"Access-Control-Max-Age", HTTPHeaderName::AccessControlMaxAge}, + { "Access-Control-Max-Age", HTTPHeaderName::AccessControlMaxAge }, #line 184 "HTTPHeaderNames.gperf" - {"Content-Security-Policy-Report-Only", HTTPHeaderName::ContentSecurityPolicyReportOnly}, + { "Content-Security-Policy-Report-Only", HTTPHeaderName::ContentSecurityPolicyReportOnly }, #line 191 "HTTPHeaderNames.gperf" - {"Cross-Origin-Opener-Policy-Report-Only", HTTPHeaderName::CrossOriginOpenerPolicyReportOnly}, + { "Cross-Origin-Opener-Policy-Report-Only", HTTPHeaderName::CrossOriginOpenerPolicyReportOnly }, #line 251 "HTTPHeaderNames.gperf" - {"X-Temp-Tablet", HTTPHeaderName::XTempTablet}, + { "X-Temp-Tablet", HTTPHeaderName::XTempTablet }, #line 221 "HTTPHeaderNames.gperf" - {"Refresh", HTTPHeaderName::Refresh}, + { "Refresh", HTTPHeaderName::Refresh }, #line 230 "HTTPHeaderNames.gperf" - {"Server-Timing", HTTPHeaderName::ServerTiming}, + { "Server-Timing", HTTPHeaderName::ServerTiming }, #line 208 "HTTPHeaderNames.gperf" - {"Last-Event-ID", HTTPHeaderName::LastEventID}, + { "Last-Event-ID", HTTPHeaderName::LastEventID }, #line 229 "HTTPHeaderNames.gperf" - {"Sec-WebSocket-Version", HTTPHeaderName::SecWebSocketVersion}, + { "Sec-WebSocket-Version", HTTPHeaderName::SecWebSocketVersion }, #line 195 "HTTPHeaderNames.gperf" - {"Default-Style", HTTPHeaderName::DefaultStyle}, + { "Default-Style", HTTPHeaderName::DefaultStyle }, #line 249 "HTTPHeaderNames.gperf" - {"X-Frame-Options", HTTPHeaderName::XFrameOptions}, + { "X-Frame-Options", HTTPHeaderName::XFrameOptions }, #line 165 "HTTPHeaderNames.gperf" - {"Access-Control-Allow-Credentials", HTTPHeaderName::AccessControlAllowCredentials}, + { "Access-Control-Allow-Credentials", HTTPHeaderName::AccessControlAllowCredentials }, #line 202 "HTTPHeaderNames.gperf" - {"If-Match", HTTPHeaderName::IfMatch}, + { "If-Match", HTTPHeaderName::IfMatch }, #line 204 "HTTPHeaderNames.gperf" - {"If-None-Match", HTTPHeaderName::IfNoneMatch}, + { "If-None-Match", HTTPHeaderName::IfNoneMatch }, #line 223 "HTTPHeaderNames.gperf" - {"Sec-Fetch-Dest", HTTPHeaderName::SecFetchDest}, + { "Sec-Fetch-Dest", HTTPHeaderName::SecFetchDest }, #line 171 "HTTPHeaderNames.gperf" - {"Access-Control-Request-Headers", HTTPHeaderName::AccessControlRequestHeaders}, + { "Access-Control-Request-Headers", HTTPHeaderName::AccessControlRequestHeaders }, #line 216 "HTTPHeaderNames.gperf" - {"Proxy-Authorization", HTTPHeaderName::ProxyAuthorization}, + { "Proxy-Authorization", HTTPHeaderName::ProxyAuthorization }, #line 209 "HTTPHeaderNames.gperf" - {"Last-Modified", HTTPHeaderName::LastModified}, + { "Last-Modified", HTTPHeaderName::LastModified }, #line 188 "HTTPHeaderNames.gperf" - {"Cross-Origin-Embedder-Policy", HTTPHeaderName::CrossOriginEmbedderPolicy}, + { "Cross-Origin-Embedder-Policy", HTTPHeaderName::CrossOriginEmbedderPolicy }, #line 232 "HTTPHeaderNames.gperf" - {"Service-Worker-Allowed", HTTPHeaderName::ServiceWorkerAllowed}, + { "Service-Worker-Allowed", HTTPHeaderName::ServiceWorkerAllowed }, #line 224 "HTTPHeaderNames.gperf" - {"Sec-Fetch-Mode", HTTPHeaderName::SecFetchMode}, + { "Sec-Fetch-Mode", HTTPHeaderName::SecFetchMode }, #line 172 "HTTPHeaderNames.gperf" - {"Access-Control-Request-Method", HTTPHeaderName::AccessControlRequestMethod}, + { "Access-Control-Request-Method", HTTPHeaderName::AccessControlRequestMethod }, #line 166 "HTTPHeaderNames.gperf" - {"Access-Control-Allow-Headers", HTTPHeaderName::AccessControlAllowHeaders}, + { "Access-Control-Allow-Headers", HTTPHeaderName::AccessControlAllowHeaders }, #line 203 "HTTPHeaderNames.gperf" - {"If-Modified-Since", HTTPHeaderName::IfModifiedSince}, + { "If-Modified-Since", HTTPHeaderName::IfModifiedSince }, #line 169 "HTTPHeaderNames.gperf" - {"Access-Control-Expose-Headers", HTTPHeaderName::AccessControlExposeHeaders}, + { "Access-Control-Expose-Headers", HTTPHeaderName::AccessControlExposeHeaders }, #line 206 "HTTPHeaderNames.gperf" - {"If-Unmodified-Since", HTTPHeaderName::IfUnmodifiedSince}, + { "If-Unmodified-Since", HTTPHeaderName::IfUnmodifiedSince }, #line 189 "HTTPHeaderNames.gperf" - {"Cross-Origin-Embedder-Policy-Report-Only", HTTPHeaderName::CrossOriginEmbedderPolicyReportOnly}, + { "Cross-Origin-Embedder-Policy-Report-Only", HTTPHeaderName::CrossOriginEmbedderPolicyReportOnly }, #line 248 "HTTPHeaderNames.gperf" - {"X-DNS-Prefetch-Control", HTTPHeaderName::XDNSPrefetchControl}, + { "X-DNS-Prefetch-Control", HTTPHeaderName::XDNSPrefetchControl }, #line 167 "HTTPHeaderNames.gperf" - {"Access-Control-Allow-Methods", HTTPHeaderName::AccessControlAllowMethods}, + { "Access-Control-Allow-Methods", HTTPHeaderName::AccessControlAllowMethods }, #line 233 "HTTPHeaderNames.gperf" - {"Service-Worker-Navigation-Preload", HTTPHeaderName::ServiceWorkerNavigationPreload} - }; + { "Service-Worker-Navigation-Preload", HTTPHeaderName::ServiceWorkerNavigationPreload } +}; -static const signed char lookup[] = - { - -1, -1, -1, -1, -1, 0, -1, -1, -1, 1, 2, -1, -1, -1, - 3, 4, -1, -1, -1, -1, 5, -1, -1, -1, -1, 6, -1, -1, - -1, -1, 7, -1, -1, -1, 8, 9, -1, -1, -1, 10, 11, -1, +static const signed char lookup[] = { + -1, -1, -1, -1, -1, 0, -1, -1, -1, 1, 2, -1, -1, -1, + 3, 4, -1, -1, -1, -1, 5, -1, -1, -1, -1, 6, -1, -1, + -1, -1, 7, -1, -1, -1, 8, 9, -1, -1, -1, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, -1, 16, -1, -1, -1, -1, 17, -1, -1, -1, -1, 18, -1, -1, -1, -1, 19, -1, -1, -1, @@ -641,29 +632,26 @@ static const signed char lookup[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, 92 - }; +}; -const struct HeaderNameHashEntry * -HTTPHeaderNamesHash::findHeaderNameImpl (const char *str, size_t len) +const struct HeaderNameHashEntry* +HTTPHeaderNamesHash::findHeaderNameImpl(const char* str, size_t len) { - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - unsigned int key = header_name_hash_function (str, len); + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { + unsigned int key = header_name_hash_function(str, len); - if (key <= MAX_HASH_VALUE) - { - int index = lookup[key]; + if (key <= MAX_HASH_VALUE) { + int index = lookup[key]; - if (index >= 0) - { - const char *s = header_name_wordlist[index].name; + if (index >= 0) { + const char* s = header_name_wordlist[index].name; - if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0') - return &header_name_wordlist[index]; + if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp(str, s, len) && s[len] == '\0') + return &header_name_wordlist[index]; } } } - return 0; + return 0; } #line 253 "HTTPHeaderNames.gperf" @@ -684,10 +672,10 @@ bool findHTTPHeaderName(StringView stringView, HTTPHeaderName& headerName) UChar character = stringView.characters16()[i]; if (!isASCII(character)) return false; - + characters[i] = static_cast(character); } - + if (auto nameAndString = HTTPHeaderNamesHash::findHeaderNameImpl(reinterpret_cast(characters), length)) { headerName = nameAndString->headerName; return true; @@ -700,10 +688,10 @@ bool findHTTPHeaderName(StringView stringView, HTTPHeaderName& headerName) StringView httpHeaderNameString(HTTPHeaderName headerName) { ASSERT(static_cast(headerName) < numHTTPHeaderNames); - + const auto& name = headerNameStrings[static_cast(headerName)]; - - return StringView { reinterpret_cast(name.name), static_cast(name.length) }; + + return StringView(std::span { reinterpret_cast(name.name), static_cast(name.length) }); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcore/HTTPParsers.cpp b/src/bun.js/bindings/webcore/HTTPParsers.cpp index 4680417f25..27e56bdc30 100644 --- a/src/bun.js/bindings/webcore/HTTPParsers.cpp +++ b/src/bun.js/bindings/webcore/HTTPParsers.cpp @@ -333,8 +333,8 @@ template static String trimInputSample(CharType* p, size_t length) { if (length <= maxInputSampleSize) - return String(p, length); - return makeString(StringView(p, length).left(maxInputSampleSize), horizontalEllipsis); + return String({ p, length }); + return makeString(StringView(std::span { p, length }).left(maxInputSampleSize), horizontalEllipsis); } std::optional parseHTTPDate(const String& value) @@ -772,7 +772,7 @@ size_t parseHTTPHeader(const uint8_t* start, size_t length, String& failureReaso } nameSize = name.size(); - nameStr = StringView(namePtr, nameSize); + nameStr = StringView(std::span { namePtr, nameSize }); for (; p < end && *p == 0x20; p++) { } @@ -799,7 +799,7 @@ size_t parseHTTPHeader(const uint8_t* start, size_t length, String& failureReaso failureReason = makeString("CR doesn't follow LF after header value at ", trimInputSample(p, end - p)); return 0; } - valueStr = String::fromUTF8(value.data(), value.size()); + valueStr = String::fromUTF8({ value.data(), value.size() }); if (valueStr.isNull()) { failureReason = "Invalid UTF-8 sequence in header value"_s; return 0; @@ -810,7 +810,7 @@ size_t parseHTTPHeader(const uint8_t* start, size_t length, String& failureReaso size_t parseHTTPRequestBody(const uint8_t* data, size_t length, Vector& body) { body.clear(); - body.append(data, length); + body.append(std::span { data, length }); return length; } diff --git a/src/bun.js/bindings/webcore/SerializedScriptValue.cpp b/src/bun.js/bindings/webcore/SerializedScriptValue.cpp index f188cf04ec..4faca3c2ad 100644 --- a/src/bun.js/bindings/webcore/SerializedScriptValue.cpp +++ b/src/bun.js/bindings/webcore/SerializedScriptValue.cpp @@ -769,7 +769,7 @@ static bool unwrapCryptoKey(JSGlobalObject* lexicalGlobalObject, const Vector static void writeLittleEndian(Vector& buffer, T value) { - buffer.append(reinterpret_cast(&value), sizeof(value)); + buffer.append(std::span { reinterpret_cast(&value), sizeof(value) }); } #else template static void writeLittleEndian(Vector& buffer, T value) @@ -792,7 +792,7 @@ template static bool writeLittleEndian(Vector& buffer, cons return false; #if ASSUME_LITTLE_ENDIAN - buffer.append(reinterpret_cast(values), length * sizeof(T)); + buffer.append(std::span { reinterpret_cast(values), length * sizeof(T) }); #else for (unsigned i = 0; i < length; i++) { T value = values[i]; @@ -807,7 +807,7 @@ template static bool writeLittleEndian(Vector& buffer, cons template<> bool writeLittleEndian(Vector& buffer, const uint8_t* values, uint32_t length) { - buffer.append(values, length); + buffer.append(std::span { values, length }); return true; } @@ -2928,7 +2928,7 @@ private: : CloneBase(lexicalGlobalObject) , m_globalObject(globalObject) , m_isDOMGlobalObject(globalObject->inherits()) - , m_canCreateDOMObject(m_isDOMGlobalObject) + // , m_canCreateDOMObject(m_isDOMGlobalObject) , m_ptr(buffer.data()) , m_end(buffer.data() + buffer.size()) , m_version(0xFFFFFFFF) @@ -3035,7 +3035,7 @@ private: : CloneBase(lexicalGlobalObject) , m_globalObject(globalObject) , m_isDOMGlobalObject(globalObject->inherits()) - , m_canCreateDOMObject(m_isDOMGlobalObject) + // , m_canCreateDOMObject(m_isDOMGlobalObject) , m_ptr(buffer.data()) , m_end(buffer.data() + buffer.size()) , m_version(0xFFFFFFFF) @@ -3195,7 +3195,7 @@ private: if (is8Bit) { if ((end - ptr) < static_cast(length)) return false; - str = String { ptr, length }; + str = String { std::span { ptr, length } }; ptr += length; return true; } @@ -3205,7 +3205,7 @@ private: return false; #if ASSUME_LITTLE_ENDIAN - str = String(reinterpret_cast(ptr), length); + str = String({ reinterpret_cast(ptr), length }); ptr += length * sizeof(UChar); #else UChar* characters; @@ -3531,7 +3531,7 @@ private: return false; if (m_ptr + size > m_end) return false; - result.append(m_ptr, size); + result.append(std::span { m_ptr, size }); m_ptr += size; return true; } @@ -4690,7 +4690,7 @@ private: fail(); return JSValue(); } - return ErrorInstance::create(m_lexicalGlobalObject, WTFMove(message), toErrorType(serializedErrorType), line, column, WTFMove(sourceURL), WTFMove(stackString)); + return ErrorInstance::create(m_lexicalGlobalObject, WTFMove(message), toErrorType(serializedErrorType), { line, column }, WTFMove(sourceURL), WTFMove(stackString)); } case ObjectReferenceTag: { auto index = readConstantPoolIndex(m_gcBuffer); @@ -4929,7 +4929,7 @@ private: JSGlobalObject* const m_globalObject; const bool m_isDOMGlobalObject; - const bool m_canCreateDOMObject; + // const bool m_canCreateDOMObject; const uint8_t* m_ptr; const uint8_t* const m_end; unsigned m_version; diff --git a/src/bun.js/bindings/webcore/SharedBuffer.cpp b/src/bun.js/bindings/webcore/SharedBuffer.cpp index 816be297dd..989b9d6e16 100644 --- a/src/bun.js/bindings/webcore/SharedBuffer.cpp +++ b/src/bun.js/bindings/webcore/SharedBuffer.cpp @@ -104,7 +104,7 @@ static Vector combineSegmentsData(const FragmentedSharedBuffer::DataSeg Vector combinedData; combinedData.reserveInitialCapacity(size); for (auto& segment : segments) - combinedData.append(segment.segment->data(), segment.segment->size()); + combinedData.append(std::span { segment.segment->data(), segment.segment->size() }); ASSERT(combinedData.size() == size); return combinedData; } @@ -164,10 +164,10 @@ Ref FragmentedSharedBuffer::getContiguousData(size_t position, siz return SharedBufferDataView { element->segment.copyRef(), offsetInSegment, length }.createSharedBuffer(); Vector combinedData; combinedData.reserveInitialCapacity(length); - combinedData.append(element->segment->data() + offsetInSegment, element->segment->size() - offsetInSegment); + combinedData.append(std::span { element->segment->data() + offsetInSegment, element->segment->size() - offsetInSegment }); for (++element; combinedData.size() < length && element != m_segments.end(); element++) { auto canCopy = std::min(length - combinedData.size(), element->segment->size()); - combinedData.append(element->segment->data(), canCopy); + combinedData.append(std::span { element->segment->data(), canCopy }); } return SharedBuffer::create(WTFMove(combinedData)); } @@ -226,7 +226,7 @@ void FragmentedSharedBuffer::append(const FragmentedSharedBuffer& data) void FragmentedSharedBuffer::append(const uint8_t* data, size_t length) { ASSERT(!m_contiguous); - m_segments.append({ m_size, DataSegment::create(Vector { data, length }) }); + m_segments.append({ m_size, DataSegment::create(Vector(std::span { data, length })) }); m_size += length; ASSERT(internallyConsistent()); } @@ -319,7 +319,7 @@ Vector FragmentedSharedBuffer::read(size_t offset, size_t length) const auto* currentSegment = getSegmentForPosition(offset); size_t offsetInSegment = offset - currentSegment->beginPosition; size_t availableInSegment = std::min(currentSegment->segment->size() - offsetInSegment, remaining); - data.append(currentSegment->segment->data() + offsetInSegment, availableInSegment); + data.append(std::span { currentSegment->segment->data() + offsetInSegment, availableInSegment }); remaining -= availableInSegment; @@ -327,7 +327,7 @@ Vector FragmentedSharedBuffer::read(size_t offset, size_t length) const while (remaining && ++currentSegment != afterLastSegment) { size_t lengthInSegment = std::min(currentSegment->segment->size(), remaining); - data.append(currentSegment->segment->data(), lengthInSegment); + data.append(std::span { currentSegment->segment->data(), lengthInSegment }); remaining -= lengthInSegment; } return data; diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_GCMOpenSSL.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_GCMOpenSSL.cpp index 0117524c83..688bfa76eb 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_GCMOpenSSL.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAES_GCMOpenSSL.cpp @@ -115,7 +115,7 @@ static std::optional> cryptDecrypt(const Vector& key, c int cipherTextLen = cipherText.size() - tagLength; Vector plainText(cipherText.size()); - Vector tag { cipherText.data() + cipherTextLen, tagLength }; + Vector tag { std::span { cipherText.data() + cipherTextLen, tagLength } }; // Create and initialize the context if (!(ctx = EvpCipherCtxPtr(EVP_CIPHER_CTX_new()))) diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesCbcCfbParams.h b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesCbcCfbParams.h index b2d8d8958a..4d498727cf 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesCbcCfbParams.h +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesCbcCfbParams.h @@ -44,7 +44,7 @@ public: if (!m_ivVector.isEmpty() || !iv.length()) return m_ivVector; - m_ivVector.append(iv.data(), iv.length()); + m_ivVector.append(std::span { iv.data(), iv.length() }); return m_ivVector; } diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesCtrParams.h b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesCtrParams.h index ded52af744..f595136f98 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesCtrParams.h +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesCtrParams.h @@ -45,7 +45,7 @@ public: if (!m_counterVector.isEmpty() || !counter.length()) return m_counterVector; - m_counterVector.append(counter.data(), counter.length()); + m_counterVector.append(std::span { counter.data(), counter.length() }); return m_counterVector; } diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesGcmParams.h b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesGcmParams.h index 67af03987f..492cf764ed 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesGcmParams.h +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmAesGcmParams.h @@ -47,7 +47,7 @@ public: if (!m_ivVector.isEmpty() || !iv.length()) return m_ivVector; - m_ivVector.append(iv.data(), iv.length()); + m_ivVector.append(std::span { iv.data(), iv.length() }); return m_ivVector; } @@ -61,7 +61,7 @@ public: if (!additionalDataBuffer.length()) return m_additionalDataVector; - m_additionalDataVector.append(additionalDataBuffer.data(), additionalDataBuffer.length()); + m_additionalDataVector.append(std::span { additionalDataBuffer.data(), additionalDataBuffer.length() }); return m_additionalDataVector; } diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmEd25519.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmEd25519.cpp index 7003222bd3..b09968213f 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmEd25519.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmEd25519.cpp @@ -42,7 +42,7 @@ static ExceptionOr> signEd25519(const Vector& sk, size_ uint8_t newSignature[64]; ED25519_sign(newSignature, data.data(), data.size(), sk.data()); - return Vector(newSignature, 64); + return Vector(std::span { newSignature, 64 }); } ExceptionOr> CryptoAlgorithmEd25519::platformSign(const CryptoKeyOKP& key, const Vector& data) diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmHkdfParams.h b/src/bun.js/bindings/webcrypto/CryptoAlgorithmHkdfParams.h index 9618863910..6167ba0062 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmHkdfParams.h +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmHkdfParams.h @@ -48,7 +48,7 @@ public: if (!m_saltVector.isEmpty() || !salt.length()) return m_saltVector; - m_saltVector.append(salt.data(), salt.length()); + m_saltVector.append(std::span { salt.data(), salt.length() }); return m_saltVector; } @@ -57,7 +57,7 @@ public: if (!m_infoVector.isEmpty() || !info.length()) return m_infoVector; - m_infoVector.append(info.data(), info.length()); + m_infoVector.append(std::span { info.data(), info.length() }); return m_infoVector; } diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmPbkdf2Params.h b/src/bun.js/bindings/webcrypto/CryptoAlgorithmPbkdf2Params.h index 2aff182c42..1e65ae258b 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmPbkdf2Params.h +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmPbkdf2Params.h @@ -48,7 +48,7 @@ public: if (!m_saltVector.isEmpty() || !salt.length()) return m_saltVector; - m_saltVector.append(salt.data(), salt.length()); + m_saltVector.append(std::span { salt.data(), salt.length() }); return m_saltVector; } diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmRsaKeyGenParams.h b/src/bun.js/bindings/webcrypto/CryptoAlgorithmRsaKeyGenParams.h index af67fd2adc..94884ddb40 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmRsaKeyGenParams.h +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmRsaKeyGenParams.h @@ -45,9 +45,10 @@ public: if (!m_publicExponentVector.isEmpty() || !publicExponent->byteLength()) return m_publicExponentVector; - m_publicExponentVector.append(publicExponent->data(), publicExponent->byteLength()); + m_publicExponentVector.append(std::span { publicExponent->data(), publicExponent->byteLength() }); return m_publicExponentVector; } + private: mutable Vector m_publicExponentVector; }; diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmRsaOaepParams.h b/src/bun.js/bindings/webcrypto/CryptoAlgorithmRsaOaepParams.h index 769f3d9cb3..f960a38c67 100644 --- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmRsaOaepParams.h +++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmRsaOaepParams.h @@ -50,7 +50,7 @@ public: if (!labelBuffer.length()) return m_labelVector; - m_labelVector.append(labelBuffer.data(), labelBuffer.length()); + m_labelVector.append(std::span { labelBuffer.data(), labelBuffer.length() }); return m_labelVector; } diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyHMAC.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyHMAC.cpp index 5ba6ec03bb..2ffd83a00b 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyHMAC.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyHMAC.cpp @@ -73,7 +73,7 @@ CryptoKeyHMAC::~CryptoKeyHMAC() = default; RefPtr CryptoKeyHMAC::generateFromBytes(void* data, size_t byteLength, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsageBitmap usages) { - Vector vec_data((uint8_t*)data, byteLength); + Vector vec_data(std::span { (uint8_t*)data, byteLength }); return adoptRef(new CryptoKeyHMAC(vec_data, hash, extractable, usages)); } diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp index 41fd1bd4da..a167242773 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyOKP.cpp @@ -95,7 +95,7 @@ CryptoKeyOKP::CryptoKeyOKP(CryptoAlgorithmIdentifier identifier, NamedCurve curv : CryptoKey(identifier, type, extractable, usages) , m_curve(curve) , m_data(data) - , m_exportKey(curve == NamedCurve::Ed25519 && type == CryptoKeyType::Private ? std::optional>(Vector(data.data(), 32)) : std::nullopt) + , m_exportKey(curve == NamedCurve::Ed25519 && type == CryptoKeyType::Private ? std::optional>(Vector(std::span { data.data(), 32 })) : std::nullopt) { } diff --git a/src/bun.js/bindings/webcrypto/CryptoKeyOKPOpenSSL.cpp b/src/bun.js/bindings/webcrypto/CryptoKeyOKPOpenSSL.cpp index ea73e761f7..462f97140a 100644 --- a/src/bun.js/bindings/webcrypto/CryptoKeyOKPOpenSSL.cpp +++ b/src/bun.js/bindings/webcrypto/CryptoKeyOKPOpenSSL.cpp @@ -58,7 +58,7 @@ std::optional CryptoKeyOKP::platformGeneratePair(CryptoAlgorithmI bool isPublicKeyExtractable = true; auto publicKey = CryptoKeyOKP::create(identifier, namedCurve, CryptoKeyType::Public, Vector(public_key), isPublicKeyExtractable, usages); ASSERT(publicKey); - auto privateKey = CryptoKeyOKP::create(identifier, namedCurve, CryptoKeyType::Private, Vector(private_key, isEd25519 ? ED25519_PRIVATE_KEY_LEN : X25519_PRIVATE_KEY_LEN), extractable, usages); + auto privateKey = CryptoKeyOKP::create(identifier, namedCurve, CryptoKeyType::Private, Vector(std::span { private_key, isEd25519 ? (unsigned int)ED25519_PRIVATE_KEY_LEN : (unsigned int)X25519_PRIVATE_KEY_LEN }), extractable, usages); ASSERT(privateKey); return CryptoKeyPair { WTFMove(publicKey), WTFMove(privateKey) }; } @@ -175,7 +175,7 @@ ExceptionOr> CryptoKeyOKP::exportSpki() const result.append(BitStringMark); addEncodedASN1Length(result, keySize + 1); result.append(InitialOctet); - result.append(platformKey().data(), platformKey().size()); + result.append(std::span { platformKey().data(), platformKey().size() }); ASSERT(result.size() == totalSize); @@ -284,7 +284,7 @@ ExceptionOr> CryptoKeyOKP::exportPkcs8() const addEncodedASN1Length(result, keySize + 2); result.append(OctetStringMark); addEncodedASN1Length(result, keySize); - result.append(exportKey().data(), exportKey().size()); + result.append(std::span { exportKey().data(), exportKey().size() }); ASSERT(result.size() == totalSize); @@ -349,9 +349,9 @@ CryptoKeyOKP::KeyMaterial CryptoKeyOKP::platformExportRaw() const if (namedCurve() == NamedCurve::Ed25519 && type() == CryptoKeyType::Private) { ASSERT(m_exportKey); const auto& exportKey = *m_exportKey; - return Vector(exportKey.data(), exportKey.size()); + return Vector(std::span { exportKey.data(), exportKey.size() }); } - return KeyMaterial(m_data.data(), m_data.size()); + return KeyMaterial(std::span { m_data.data(), m_data.size() }); } } // namespace WebCore diff --git a/src/bun.js/bindings/webcrypto/SubtleCrypto.cpp b/src/bun.js/bindings/webcrypto/SubtleCrypto.cpp index 2bfaa05789..cd07c1c3dc 100644 --- a/src/bun.js/bindings/webcrypto/SubtleCrypto.cpp +++ b/src/bun.js/bindings/webcrypto/SubtleCrypto.cpp @@ -493,7 +493,7 @@ static std::optional toKeyData(SubtleCrypto::KeyFormat format, SubtleCr return std::nullopt; }, [](auto& bufferSource) -> std::optional { - return KeyData { Vector { static_cast(bufferSource->data()), bufferSource->byteLength() } }; + return KeyData { Vector(std::span { static_cast(bufferSource->data()), bufferSource->byteLength() }) }; }); case SubtleCrypto::KeyFormat::Jwk: return WTF::switchOn( @@ -513,7 +513,7 @@ static std::optional toKeyData(SubtleCrypto::KeyFormat format, SubtleCr static Vector copyToVector(BufferSource&& data) { - return { data.data(), data.length() }; + return std::span { data.data(), data.length() }; } static bool isSupportedExportKey(JSGlobalObject& state, CryptoAlgorithmIdentifier identifier) @@ -1072,7 +1072,7 @@ void SubtleCrypto::wrapKey(JSC::JSGlobalObject& state, KeyFormat format, CryptoK auto jwk = toJS>(*(promise->globalObject()), *(promise->globalObject()), WTFMove(std::get(key))); String jwkString = JSONStringify(promise->globalObject(), jwk, 0); CString jwkUTF8String = jwkString.utf8(StrictConversion); - bytes.append(jwkUTF8String.data(), jwkUTF8String.length()); + bytes.append(std::span { jwkUTF8String.data(), jwkUTF8String.length() }); } } @@ -1173,7 +1173,7 @@ void SubtleCrypto::unwrapKey(JSC::JSGlobalObject& state, KeyFormat format, Buffe auto& vm = state.vm(); auto scope = DECLARE_THROW_SCOPE(vm); - String jwkString(bytes.data(), bytes.size()); + String jwkString(std::span { bytes.data(), bytes.size() }); JSLockHolder locker(vm); auto jwkObject = JSONParse(&state, jwkString); if (!jwkObject) { diff --git a/src/bun.js/javascript_core_c_api.zig b/src/bun.js/javascript_core_c_api.zig index 75fa9d8b0a..87e06a3149 100644 --- a/src/bun.js/javascript_core_c_api.zig +++ b/src/bun.js/javascript_core_c_api.zig @@ -500,7 +500,6 @@ pub const ExternalStringFinalizer = *const fn (finalize_ptr: ?*anyopaque, ref: J pub extern fn JSStringCreate(string: UTF8Ptr, length: usize) JSStringRef; pub extern fn JSStringCreateStatic(string: UTF8Ptr, length: usize) JSStringRef; pub extern fn JSStringCreateExternal(string: UTF8Ptr, length: usize, finalize_ptr: ?*anyopaque, finalizer: ExternalStringFinalizer) JSStringRef; -pub extern fn JSStringIsEqualToString(a: JSStringRef, string: UTF8Ptr, length: usize) bool; pub extern fn JSStringEncoding(string: JSStringRef) Encoding; pub extern fn JSStringGetCharacters8Ptr(string: JSStringRef) UTF8Ptr; pub extern fn JSCellType(cell: JSCellValue) CellType; diff --git a/src/bun.js/modules/BunJSCModule.h b/src/bun.js/modules/BunJSCModule.h index fba2c95861..994ccac390 100644 --- a/src/bun.js/modules/BunJSCModule.h +++ b/src/bun.js/modules/BunJSCModule.h @@ -473,7 +473,7 @@ JSC_DEFINE_HOST_FUNCTION(functionSetTimeZone, (JSGlobalObject * globalObject, vm.dateCache.resetIfNecessarySlow(); WTF::Vector buffer; WTF::getTimeZoneOverride(buffer); - WTF::String timeZoneString(buffer.data(), buffer.size()); + WTF::String timeZoneString({buffer.data(), buffer.size()}); return JSValue::encode(jsString(vm, timeZoneString)); } diff --git a/src/shell/shell.zig b/src/shell/shell.zig index 5a814dadb5..920ff3ba37 100644 --- a/src/shell/shell.zig +++ b/src/shell/shell.zig @@ -109,19 +109,19 @@ pub const ShellErr = union(enum) { defer this.deinit(bun.default_allocator); switch (this) { .sys => |err| { - bun.Output.prettyErrorln("error: Failed to due to error: bunsh: {s}: {}", .{ err.message, err.path }); + bun.Output.prettyErrorln("error: Failed due to error: bunsh: {s}: {}", .{ err.message, err.path }); bun.Global.exit(1); }, .custom => |custom| { - bun.Output.prettyErrorln("error: Failed to due to error: {s}", .{custom}); + bun.Output.prettyErrorln("error: Failed due to error: {s}", .{custom}); bun.Global.exit(1); }, .invalid_arguments => |invalid_arguments| { - bun.Output.prettyErrorln("error: Failed to due to error: bunsh: invalid arguments: {s}", .{invalid_arguments.val}); + bun.Output.prettyErrorln("error: Failed due to error: bunsh: invalid arguments: {s}", .{invalid_arguments.val}); bun.Global.exit(1); }, .todo => |todo| { - bun.Output.prettyErrorln("error: Failed to due to error: TODO: {s}", .{todo}); + bun.Output.prettyErrorln("error: Failed due to error: TODO: {s}", .{todo}); bun.Global.exit(1); }, }