From: Chris Duncan Date: Fri, 21 Aug 2026 20:17:51 +0000 (-0700) Subject: Reuse one ge for base point arithmetic. X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=9ed12b76d76a1ff33a112e4da0b55668a5d42c17;p=nano25519.git Reuse one ge for base point arithmetic. --- diff --git a/src/assembly/ge.ts b/src/assembly/ge.ts index 32dd7c5..d48c3ee 100644 --- a/src/assembly/ge.ts +++ b/src/assembly/ge.ts @@ -32,16 +32,7 @@ function ge_cmov (t: ge_precomp, u: ge_precomp, b: u8): void { } const ge_cmov8_minust: ge_precomp = new ge_precomp() -const ge_cmov8_precomp: StaticArray = StaticArray.fromArray([ - new ge_precomp(), - new ge_precomp(), - new ge_precomp(), - new ge_precomp(), - new ge_precomp(), - new ge_precomp(), - new ge_precomp(), - new ge_precomp(), -]) +const ge_cmov8_precomp: ge_precomp = new ge_precomp() //@ts-expect-error @inline function ge_cmov8_base (t: ge_precomp, offset: i32, b: i8): void { @@ -52,10 +43,10 @@ function ge_cmov8_base (t: ge_precomp, offset: i32, b: i8): void { ge_precomp_0(t) for (let i = 0; i < 8; i++) { const ptr = base + offset + (i * 144) // 4 bytes * 12 values * 3 fields - memory.copy(changetype(ge_cmov8_precomp[i].yplusx), ptr, 48) - memory.copy(changetype(ge_cmov8_precomp[i].yminusx), ptr + 48, 48) - memory.copy(changetype(ge_cmov8_precomp[i].xy2d), ptr + 96, 48) - ge_cmov(t, ge_cmov8_precomp[i], equal(babs, i8(i + 1))) + memory.copy(changetype(ge_cmov8_precomp.yplusx), ptr, 48) + memory.copy(changetype(ge_cmov8_precomp.yminusx), ptr + 48, 48) + memory.copy(changetype(ge_cmov8_precomp.xy2d), ptr + 96, 48) + ge_cmov(t, ge_cmov8_precomp, equal(babs, i8(i + 1))) } fe_copy(minust.yplusx, t.yminusx)