Skip to content
This repository was archived by the owner on Mar 7, 2025. It is now read-only.

Commit 5a0b0fc

Browse files
committed
Use math/rand/v2.Uint32N instead of runtime.fastrand in v1.22
1 parent c0064a0 commit 5a0b0fc

File tree

5 files changed

+55
-11
lines changed

5 files changed

+55
-11
lines changed

bits.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,3 @@ func hasZeroByte(x uint64) bitset {
5353
func castUint64(m *metadata) uint64 {
5454
return *(*uint64)((unsafe.Pointer)(m))
5555
}
56-
57-
//go:linkname fastrand runtime.fastrand
58-
func fastrand() uint32

bits_amd64.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,3 @@ func nextMatch(b *bitset) (s uint32) {
4545
*b &= ^(1 << s) // clear bit |s|
4646
return
4747
}
48-
49-
//go:linkname fastrand runtime.fastrand
50-
func fastrand() uint32

fastrand.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Copyright 2023 Dolthub, Inc.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
//go:build !go1.22
16+
17+
package swiss
18+
19+
import (
20+
_ "unsafe"
21+
)
22+
23+
//go:linkname fastrand runtime.fastrand
24+
func fastrand() uint32
25+
26+
// randIntN returns a random number in the interval [0, n).
27+
func randIntN(n int) uint32 {
28+
return fastModN(fastrand(), uint32(n))
29+
}

fastrand_1.22.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Copyright 2023 Dolthub, Inc.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
//go:build go1.22
16+
17+
package swiss
18+
19+
import (
20+
"math/rand/v2"
21+
)
22+
23+
// randIntN returns a random number in the interval [0, n).
24+
func randIntN(n int) uint32 {
25+
return rand.Uint32N(uint32(n))
26+
}

map.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -352,8 +352,3 @@ func probeStart(hi h1, groups int) uint32 {
352352
func fastModN(x, n uint32) uint32 {
353353
return uint32((uint64(x) * uint64(n)) >> 32)
354354
}
355-
356-
// randIntN returns a random number in the interval [0, n).
357-
func randIntN(n int) uint32 {
358-
return fastModN(fastrand(), uint32(n))
359-
}

0 commit comments

Comments
 (0)