diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2023-11-01 14:54:47 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-01 07:54:47 +0100 |
commit | 92141e82ede93028be5781d6f4e906cefa3b03eb (patch) | |
tree | ab3034f14e197b20f1439f8ec26829cac28e4c24 /lib/pure/collections/tableimpl.nim | |
parent | 801c02bf48b1612c8bf58ed113f944c9d6e32ead (diff) | |
download | Nim-92141e82ede93028be5781d6f4e906cefa3b03eb.tar.gz |
fixes #22883; replace `default(typeof(` with `reset`; suppress `Unsaf… (#22895)
fixes #22883 …eDefault` warnings avoid issues mentioned by https://forum.nim-lang.org namely, it allocated unnecessary stack objects in the loop ```c while (1) { tyObject_N__8DSNqSGSHBKOhI8CqSgAow T5_; nimZeroMem((void *)(&T5_), sizeof(tyObject_N__8DSNqSGSHBKOhI8CqSgAow)); eqsink___test4954_u450((&(*t_p0).data.p->data[i].Field1), T5_); } ``` It might be more efficient in some cases follow up https://github.com/nim-lang/Nim/pull/21821
Diffstat (limited to 'lib/pure/collections/tableimpl.nim')
-rw-r--r-- | lib/pure/collections/tableimpl.nim | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/pure/collections/tableimpl.nim b/lib/pure/collections/tableimpl.nim index 112aaa7d0..9bccc8d96 100644 --- a/lib/pure/collections/tableimpl.nim +++ b/lib/pure/collections/tableimpl.nim @@ -119,8 +119,8 @@ template delImplIdx(t, i, makeEmpty, cellEmpty, cellHash) = var j = i # The correctness of this depends on (h+1) in nextTry var r = j # though may be adaptable to other simple sequences. makeEmpty(i) # mark current EMPTY - t.data[i].key = default(typeof(t.data[i].key)) - t.data[i].val = default(typeof(t.data[i].val)) + reset(t.data[i].key) + reset(t.data[i].val) while true: i = (i + 1) and msk # increment mod table size if cellEmpty(i): # end of collision cluster; So all done @@ -151,8 +151,8 @@ template clearImpl() {.dirty.} = for i in 0 ..< t.dataLen: when compiles(t.data[i].hcode): # CountTable records don't contain a hcode t.data[i].hcode = 0 - t.data[i].key = default(typeof(t.data[i].key)) - t.data[i].val = default(typeof(t.data[i].val)) + reset(t.data[i].key) + reset(t.data[i].val) t.counter = 0 template ctAnd(a, b): bool = |