diff --git a/src/internal/bisect/bisect.go b/src/internal/bisect/bisect.go index 3e5a6849f7e34a..fa753e80e7e56a 100644 --- a/src/internal/bisect/bisect.go +++ b/src/internal/bisect/bisect.go @@ -180,7 +180,6 @@ import ( "runtime" "sync" "sync/atomic" - "unsafe" ) // New creates and returns a new Matcher implementing the given pattern. @@ -311,22 +310,7 @@ type Matcher struct { quiet bool // disables all reporting. reset if verbose is true. use case is -d=fmahash=qn enable bool // when true, list is for “enable and report” (when false, “disable and report”) list []cond // conditions; later ones win over earlier ones - dedup atomicPointerDedup -} - -// atomicPointerDedup is an atomic.Pointer[dedup], -// but we are avoiding using Go 1.19's atomic.Pointer -// until the bootstrap toolchain can be relied upon to have it. -type atomicPointerDedup struct { - p unsafe.Pointer -} - -func (p *atomicPointerDedup) Load() *dedup { - return (*dedup)(atomic.LoadPointer(&p.p)) -} - -func (p *atomicPointerDedup) CompareAndSwap(old, new *dedup) bool { - return atomic.CompareAndSwapPointer(&p.p, unsafe.Pointer(old), unsafe.Pointer(new)) + dedup atomic.Pointer[dedup] } // A cond is a single condition in the matcher.