diff options
author | 2024-06-21 16:35:32 +0000 | |
---|---|---|
committer | 2024-06-21 17:35:32 +0100 | |
commit | 9143ac6fb4f68f1c79e42f7adc10e68bf7f36e87 (patch) | |
tree | 73514f164dd48cfc3f902e6b3f3d2a6db8c6175c /vendor/github.com/dolthub/swiss/bits.go | |
parent | [chore] update go-structr and go-mangler to no longer rely on modern-go/refle... (diff) | |
download | gotosocial-9143ac6fb4f68f1c79e42f7adc10e68bf7f36e87.tar.xz |
updates go-mutexes to no longer rely on unsafe linkname (#3027)
Diffstat (limited to 'vendor/github.com/dolthub/swiss/bits.go')
-rw-r--r-- | vendor/github.com/dolthub/swiss/bits.go | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/vendor/github.com/dolthub/swiss/bits.go b/vendor/github.com/dolthub/swiss/bits.go deleted file mode 100644 index f435b6dc9..000000000 --- a/vendor/github.com/dolthub/swiss/bits.go +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2023 Dolthub, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//go:build !amd64 || nosimd - -package swiss - -import ( - "math/bits" - "unsafe" -) - -const ( - groupSize = 8 - maxAvgGroupLoad = 7 - - loBits uint64 = 0x0101010101010101 - hiBits uint64 = 0x8080808080808080 -) - -type bitset uint64 - -func metaMatchH2(m *metadata, h h2) bitset { - // https://graphics.stanford.edu/~seander/bithacks.html##ValueInWord - return hasZeroByte(castUint64(m) ^ (loBits * uint64(h))) -} - -func metaMatchEmpty(m *metadata) bitset { - return hasZeroByte(castUint64(m) ^ hiBits) -} - -func nextMatch(b *bitset) uint32 { - s := uint32(bits.TrailingZeros64(uint64(*b))) - *b &= ^(1 << s) // clear bit |s| - return s >> 3 // div by 8 -} - -func hasZeroByte(x uint64) bitset { - return bitset(((x - loBits) & ^(x)) & hiBits) -} - -func castUint64(m *metadata) uint64 { - return *(*uint64)((unsafe.Pointer)(m)) -} - -//go:linkname fastrand runtime.fastrand -func fastrand() uint32 |