Commit d497eeb0 authored by Michael Hudson-Doyle's avatar Michael Hudson-Doyle Committed by Ian Lance Taylor

runtime: remove unused xchgp/xchgp1

I noticed that they were unimplemented on arm64 but then that they were
in fact not used at all.

Change-Id: Iee579feda2a5e374fa571bcc8c89e4ef607d50f6
Reviewed-on: https://go-review.googlesource.com/13951
Run-TryBot: Minux Ma <minux@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
parent b9e4867e
...@@ -551,13 +551,6 @@ TEXT runtime·xchg(SB), NOSPLIT, $0-12 ...@@ -551,13 +551,6 @@ TEXT runtime·xchg(SB), NOSPLIT, $0-12
MOVL AX, ret+8(FP) MOVL AX, ret+8(FP)
RET RET
TEXT runtime·xchgp1(SB), NOSPLIT, $0-12
MOVL ptr+0(FP), BX
MOVL new+4(FP), AX
XCHGL AX, 0(BX)
MOVL AX, ret+8(FP)
RET
TEXT runtime·xchguintptr(SB), NOSPLIT, $0-12 TEXT runtime·xchguintptr(SB), NOSPLIT, $0-12
JMP runtime·xchg(SB) JMP runtime·xchg(SB)
......
...@@ -563,13 +563,6 @@ TEXT runtime·xchg64(SB), NOSPLIT, $0-24 ...@@ -563,13 +563,6 @@ TEXT runtime·xchg64(SB), NOSPLIT, $0-24
MOVQ AX, ret+16(FP) MOVQ AX, ret+16(FP)
RET RET
TEXT runtime·xchgp1(SB), NOSPLIT, $0-24
MOVQ ptr+0(FP), BX
MOVQ new+8(FP), AX
XCHGQ AX, 0(BX)
MOVQ AX, ret+16(FP)
RET
TEXT runtime·xchguintptr(SB), NOSPLIT, $0-24 TEXT runtime·xchguintptr(SB), NOSPLIT, $0-24
JMP runtime·xchg64(SB) JMP runtime·xchg64(SB)
......
...@@ -517,13 +517,6 @@ TEXT runtime·xchg64(SB), NOSPLIT, $0-24 ...@@ -517,13 +517,6 @@ TEXT runtime·xchg64(SB), NOSPLIT, $0-24
MOVQ AX, ret+16(FP) MOVQ AX, ret+16(FP)
RET RET
TEXT runtime·xchgp1(SB), NOSPLIT, $0-12
MOVL ptr+0(FP), BX
MOVL new+4(FP), AX
XCHGL AX, 0(BX)
MOVL AX, ret+8(FP)
RET
TEXT runtime·xchguintptr(SB), NOSPLIT, $0-12 TEXT runtime·xchguintptr(SB), NOSPLIT, $0-12
JMP runtime·xchg(SB) JMP runtime·xchg(SB)
......
...@@ -584,9 +584,6 @@ TEXT runtime·xchg64(SB), NOSPLIT, $0-24 ...@@ -584,9 +584,6 @@ TEXT runtime·xchg64(SB), NOSPLIT, $0-24
MOVD R3, ret+16(FP) MOVD R3, ret+16(FP)
RET RET
TEXT runtime·xchgp1(SB), NOSPLIT, $0-24
BR runtime·xchg64(SB)
TEXT runtime·xchguintptr(SB), NOSPLIT, $0-24 TEXT runtime·xchguintptr(SB), NOSPLIT, $0-24
BR runtime·xchg64(SB) BR runtime·xchg64(SB)
......
...@@ -52,9 +52,6 @@ func xadd(ptr *uint32, delta int32) uint32 ...@@ -52,9 +52,6 @@ func xadd(ptr *uint32, delta int32) uint32
//go:noescape //go:noescape
func xchg(ptr *uint32, new uint32) uint32 func xchg(ptr *uint32, new uint32) uint32
// NO go:noescape annotation; see atomic_pointer.go.
func xchgp1(ptr unsafe.Pointer, new unsafe.Pointer) unsafe.Pointer
//go:noescape //go:noescape
func xchguintptr(ptr *uintptr, new uintptr) uintptr func xchguintptr(ptr *uintptr, new uintptr) uintptr
......
...@@ -45,9 +45,6 @@ func xchg(ptr *uint32, new uint32) uint32 ...@@ -45,9 +45,6 @@ func xchg(ptr *uint32, new uint32) uint32
//go:noescape //go:noescape
func xchg64(ptr *uint64, new uint64) uint64 func xchg64(ptr *uint64, new uint64) uint64
// NO go:noescape annotation; see atomic_pointer.go.
func xchgp1(ptr unsafe.Pointer, new unsafe.Pointer) unsafe.Pointer
//go:noescape //go:noescape
func xchguintptr(ptr *uintptr, new uintptr) uintptr func xchguintptr(ptr *uintptr, new uintptr) uintptr
......
...@@ -41,16 +41,6 @@ func xchg(addr *uint32, v uint32) uint32 { ...@@ -41,16 +41,6 @@ func xchg(addr *uint32, v uint32) uint32 {
} }
} }
//go:nosplit
func xchgp1(addr unsafe.Pointer, v unsafe.Pointer) unsafe.Pointer {
for {
old := *(*unsafe.Pointer)(addr)
if casp1((*unsafe.Pointer)(addr), old, v) {
return old
}
}
}
//go:nosplit //go:nosplit
func xchguintptr(addr *uintptr, v uintptr) uintptr { func xchguintptr(addr *uintptr, v uintptr) uintptr {
return uintptr(xchg((*uint32)(unsafe.Pointer(addr)), uint32(v))) return uintptr(xchg((*uint32)(unsafe.Pointer(addr)), uint32(v)))
......
...@@ -22,9 +22,6 @@ func xchg(ptr *uint32, new uint32) uint32 ...@@ -22,9 +22,6 @@ func xchg(ptr *uint32, new uint32) uint32
//go:noescape //go:noescape
func xchg64(ptr *uint64, new uint64) uint64 func xchg64(ptr *uint64, new uint64) uint64
// NO go:noescape annotation; see atomic_pointer.go.
func xchgp1(ptr unsafe.Pointer, new unsafe.Pointer) unsafe.Pointer
//go:noescape //go:noescape
func xchguintptr(ptr *uintptr, new uintptr) uintptr func xchguintptr(ptr *uintptr, new uintptr) uintptr
......
...@@ -10,7 +10,7 @@ import "unsafe" ...@@ -10,7 +10,7 @@ import "unsafe"
// because while ptr does not escape, new does. // because while ptr does not escape, new does.
// If new is marked as not escaping, the compiler will make incorrect // If new is marked as not escaping, the compiler will make incorrect
// escape analysis decisions about the pointer value being stored. // escape analysis decisions about the pointer value being stored.
// Instead, these are wrappers around the actual atomics (xchgp1 and so on) // Instead, these are wrappers around the actual atomics (casp1 and so on)
// that use noescape to convey which arguments do not escape. // that use noescape to convey which arguments do not escape.
// //
// Additionally, these functions must update the shadow heap for // Additionally, these functions must update the shadow heap for
...@@ -22,13 +22,6 @@ func atomicstorep(ptr unsafe.Pointer, new unsafe.Pointer) { ...@@ -22,13 +22,6 @@ func atomicstorep(ptr unsafe.Pointer, new unsafe.Pointer) {
writebarrierptr_nostore((*uintptr)(ptr), uintptr(new)) writebarrierptr_nostore((*uintptr)(ptr), uintptr(new))
} }
//go:nosplit
func xchgp(ptr unsafe.Pointer, new unsafe.Pointer) unsafe.Pointer {
old := xchgp1(noescape(ptr), new)
writebarrierptr_nostore((*uintptr)(ptr), uintptr(new))
return old
}
//go:nosplit //go:nosplit
func casp(ptr *unsafe.Pointer, old, new unsafe.Pointer) bool { func casp(ptr *unsafe.Pointer, old, new unsafe.Pointer) bool {
if !casp1((*unsafe.Pointer)(noescape(unsafe.Pointer(ptr))), noescape(old), new) { if !casp1((*unsafe.Pointer)(noescape(unsafe.Pointer(ptr))), noescape(old), new) {
......
...@@ -24,9 +24,6 @@ func xchg(ptr *uint32, new uint32) uint32 ...@@ -24,9 +24,6 @@ func xchg(ptr *uint32, new uint32) uint32
//go:noescape //go:noescape
func xchg64(ptr *uint64, new uint64) uint64 func xchg64(ptr *uint64, new uint64) uint64
// NO go:noescape annotation; see atomic_pointer.go.
func xchgp1(ptr unsafe.Pointer, new unsafe.Pointer) unsafe.Pointer
//go:noescape //go:noescape
func xchguintptr(ptr *uintptr, new uintptr) uintptr func xchguintptr(ptr *uintptr, new uintptr) uintptr
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment