From: Chris Duncan Date: Fri, 20 Jun 2025 08:55:58 +0000 (-0700) Subject: Fix WASM workers. X-Git-Tag: v5.0.4~1 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=f987d1859854db5c02235e63737cb51481ec5453;p=nano-pow.git Fix WASM workers. Worker was removing listener when stopped but was then deaf to main thread, so restore listener after posting its message back. Reduce WASM module iterations to get results more often from slower hardware. --- diff --git a/src/lib/generate/wasm/asm/generate.ts b/src/lib/generate/wasm/asm/generate.ts index 7c34492..463b22a 100644 --- a/src/lib/generate/wasm/asm/generate.ts +++ b/src/lib/generate/wasm/asm/generate.ts @@ -153,7 +153,7 @@ console.log(`export function main (seed: u64, h0: u64, h1: u64, h2: u64, h3: u64 let r0: u64 = 0 let r1: u64 = 0 let result = v128.splat(0) - const iterations: u64 = 1 << 24 + const iterations: u64 = 1 << 20 for (let i: u64 = 0; i < iterations; i++) { m0 = i64x2(unchecked(seed + i), unchecked(seed + i + 1)) diff --git a/src/lib/generate/wasm/index.ts b/src/lib/generate/wasm/index.ts index 704d659..d9d99e8 100644 --- a/src/lib/generate/wasm/index.ts +++ b/src/lib/generate/wasm/index.ts @@ -74,7 +74,7 @@ async function dispatch (): Promise { return new Promise(resolve => { const attempts = [] for (let i = 0; i < workers.length; i++) { - data.seed = bigintToHex((bigintRandom() & ~((1n << 24n) - 1n)), 16) + data.seed = bigintToHex((bigintRandom() & ~((1n << 20n) - 1n)), 16) attempts.push(new Promise((found, err) => { const w = workers[i] w.onerror = err diff --git a/src/lib/generate/wasm/worker.ts b/src/lib/generate/wasm/worker.ts index 31e7997..2de0fce 100644 --- a/src/lib/generate/wasm/worker.ts +++ b/src/lib/generate/wasm/worker.ts @@ -72,6 +72,7 @@ const worker = async (compute: number[]): Promise => { } } finally { postMessage(result) + addEventListener('message', handleMessage) } }