From 2c0bd763b48255b4c459c4c205a62899c94b5719 Mon Sep 17 00:00:00 2001 From: Sy Brand Date: Thu, 26 Mar 2026 14:00:07 +0000 Subject: [PATCH 1/3] Add --gc-frequency option --- runtime/fastly/CMakeLists.txt | 4 ++++ runtime/fastly/build-debug.sh | 31 +++++++++++++++++++++++++++++-- runtime/fastly/handler.cpp | 3 +++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/runtime/fastly/CMakeLists.txt b/runtime/fastly/CMakeLists.txt index 8946db3dc6..05e68ee6c0 100644 --- a/runtime/fastly/CMakeLists.txt +++ b/runtime/fastly/CMakeLists.txt @@ -63,4 +63,8 @@ add_builtin(fastly::html_rewriter add_compile_definitions(PUBLIC RUNTIME_VERSION=${RUNTIME_VERSION}) +if(DEFINED FASTLY_GC_FREQUENCY) + add_compile_definitions(PUBLIC FASTLY_GC_FREQUENCY=${FASTLY_GC_FREQUENCY}) +endif() + project(FastlyJS) diff --git a/runtime/fastly/build-debug.sh b/runtime/fastly/build-debug.sh index aa73879c15..9aedb2dd18 100755 --- a/runtime/fastly/build-debug.sh +++ b/runtime/fastly/build-debug.sh @@ -4,10 +4,37 @@ set -euo pipefail set -x cd "$(dirname "$0")" || exit 1 + +# Parse command line arguments +KEEP_DEBUG_INFO=0 +GC_FREQUENCY="" + +while [[ $# -gt 0 ]]; do + case $1 in + --keep-debug-info) + KEEP_DEBUG_INFO=1 + shift + ;; + --gc-frequency) + if [[ -n "${2:-}" ]]; then + GC_FREQUENCY="-DFASTLY_GC_FREQUENCY=$2" + shift 2 + else + echo "Error: --gc-frequency requires a value" + exit 1 + fi + ;; + *) + echo "Unknown option: $1" + exit 1 + ;; + esac +done + RUNTIME_VERSION=$(npm pkg get version --json --prefix=../../ | jq -r) -HOST_API=$(realpath host-api) cmake -B build-debug -DCMAKE_BUILD_TYPE=Debug -DENABLE_BUILTIN_WEB_FETCH=0 -DENABLE_BUILTIN_WEB_FETCH_FETCH_EVENT=0 -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DRUNTIME_VERSION="\"$RUNTIME_VERSION-debug\"" -DENABLE_JS_DEBUGGER=OFF +HOST_API=$(realpath host-api) cmake -B build-debug -DCMAKE_BUILD_TYPE=Debug -DENABLE_BUILTIN_WEB_FETCH=0 -DENABLE_BUILTIN_WEB_FETCH_FETCH_EVENT=0 -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DRUNTIME_VERSION="\"$RUNTIME_VERSION-debug\"" -DENABLE_JS_DEBUGGER=OFF $GC_FREQUENCY cmake --build build-debug --parallel 10 -if [ "${1:-default}" != "--keep-debug-info" ]; then +if [ "$KEEP_DEBUG_INFO" -eq 0 ]; then wasm-tools strip build-debug/starling-raw.wasm/starling-raw.wasm -d ".debug_(info|loc|ranges|abbrev|line|str)" -o ../../fastly.debug.wasm else cp build-debug/starling-raw.wasm/starling-raw.wasm ../../fastly.debug.wasm diff --git a/runtime/fastly/handler.cpp b/runtime/fastly/handler.cpp index dd722d1a79..bc7d807d4d 100644 --- a/runtime/fastly/handler.cpp +++ b/runtime/fastly/handler.cpp @@ -19,6 +19,9 @@ api::Engine *ENGINE; // Install corresponds to Wizer time, so we configure the engine here bool install(api::Engine *engine) { + #if defined(JS_GC_ZEAL) && defined(FASTLY_GC_FREQUENCY) + JS::SetGCZeal(engine->cx(), 2, FASTLY_GC_FREQUENCY); + #endif ENGINE = engine; return true; } From 6f1729b58250e15f03641b1904c00c83a4d0c5d9 Mon Sep 17 00:00:00 2001 From: Sy Brand Date: Thu, 26 Mar 2026 14:09:39 +0000 Subject: [PATCH 2/3] fmt --- runtime/fastly/handler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/fastly/handler.cpp b/runtime/fastly/handler.cpp index bc7d807d4d..a962876fc7 100644 --- a/runtime/fastly/handler.cpp +++ b/runtime/fastly/handler.cpp @@ -19,9 +19,9 @@ api::Engine *ENGINE; // Install corresponds to Wizer time, so we configure the engine here bool install(api::Engine *engine) { - #if defined(JS_GC_ZEAL) && defined(FASTLY_GC_FREQUENCY) +#if defined(JS_GC_ZEAL) && defined(FASTLY_GC_FREQUENCY) JS::SetGCZeal(engine->cx(), 2, FASTLY_GC_FREQUENCY); - #endif +#endif ENGINE = engine; return true; } From f8d0e969fb135daf329f00f247c87a91f39967f9 Mon Sep 17 00:00:00 2001 From: Sy Brand Date: Thu, 26 Mar 2026 14:19:22 +0000 Subject: [PATCH 3/3] Shellcheck --- runtime/fastly/build-debug.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/fastly/build-debug.sh b/runtime/fastly/build-debug.sh index 9aedb2dd18..5968694f1a 100755 --- a/runtime/fastly/build-debug.sh +++ b/runtime/fastly/build-debug.sh @@ -32,7 +32,7 @@ while [[ $# -gt 0 ]]; do done RUNTIME_VERSION=$(npm pkg get version --json --prefix=../../ | jq -r) -HOST_API=$(realpath host-api) cmake -B build-debug -DCMAKE_BUILD_TYPE=Debug -DENABLE_BUILTIN_WEB_FETCH=0 -DENABLE_BUILTIN_WEB_FETCH_FETCH_EVENT=0 -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DRUNTIME_VERSION="\"$RUNTIME_VERSION-debug\"" -DENABLE_JS_DEBUGGER=OFF $GC_FREQUENCY +HOST_API=$(realpath host-api) cmake -B build-debug -DCMAKE_BUILD_TYPE=Debug -DENABLE_BUILTIN_WEB_FETCH=0 -DENABLE_BUILTIN_WEB_FETCH_FETCH_EVENT=0 -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DRUNTIME_VERSION="\"$RUNTIME_VERSION-debug\"" -DENABLE_JS_DEBUGGER=OFF "$GC_FREQUENCY" cmake --build build-debug --parallel 10 if [ "$KEEP_DEBUG_INFO" -eq 0 ]; then wasm-tools strip build-debug/starling-raw.wasm/starling-raw.wasm -d ".debug_(info|loc|ranges|abbrev|line|str)" -o ../../fastly.debug.wasm