aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/select.go
diff options
context:
space:
mode:
authorMichael Hudson-Doyle <michael.hudson@canonical.com>2015-04-11 10:01:54 +1200
committerIan Lance Taylor <iant@golang.org>2015-04-15 16:59:49 +0000
commitab4df700b841fcd9a5d249b77c547bad9574d948 (patch)
treed6edc85b7486f5cb33bdc4f9bbff2d77a26a97d5 /src/runtime/select.go
parentf7be77e5b61706b6264367c43b78a9a4a93f8f3a (diff)
downloadgo-ab4df700b841fcd9a5d249b77c547bad9574d948.tar.xz
runtime: merge slice and sliceStruct
By removing type slice, renaming type sliceStruct to type slice and whacking until it compiles. Has a pleasing net reduction of conversions. Fixes #10188 Change-Id: I77202b8df637185b632fd7875a1fdd8d52c7a83c Reviewed-on: https://go-review.googlesource.com/8770 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/runtime/select.go')
-rw-r--r--src/runtime/select.go10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/runtime/select.go b/src/runtime/select.go
index 98ac5a3d61..2dd541b530 100644
--- a/src/runtime/select.go
+++ b/src/runtime/select.go
@@ -159,7 +159,7 @@ func selectdefaultImpl(sel *hselect, callerpc uintptr, so uintptr) {
}
func sellock(sel *hselect) {
- lockslice := sliceStruct{unsafe.Pointer(sel.lockorder), int(sel.ncase), int(sel.ncase)}
+ lockslice := slice{unsafe.Pointer(sel.lockorder), int(sel.ncase), int(sel.ncase)}
lockorder := *(*[]*hchan)(unsafe.Pointer(&lockslice))
var c *hchan
for _, c0 := range lockorder {
@@ -181,7 +181,7 @@ func selunlock(sel *hselect) {
// Now if the first M touches sel, it will access freed memory.
n := int(sel.ncase)
r := 0
- lockslice := sliceStruct{unsafe.Pointer(sel.lockorder), n, n}
+ lockslice := slice{unsafe.Pointer(sel.lockorder), n, n}
lockorder := *(*[]*hchan)(unsafe.Pointer(&lockslice))
// skip the default case
if n > 0 && lockorder[0] == nil {
@@ -221,7 +221,7 @@ func selectgoImpl(sel *hselect) (uintptr, uint16) {
print("select: sel=", sel, "\n")
}
- scaseslice := sliceStruct{unsafe.Pointer(&sel.scase), int(sel.ncase), int(sel.ncase)}
+ scaseslice := slice{unsafe.Pointer(&sel.scase), int(sel.ncase), int(sel.ncase)}
scases := *(*[]scase)(unsafe.Pointer(&scaseslice))
var t0 int64
@@ -241,7 +241,7 @@ func selectgoImpl(sel *hselect) (uintptr, uint16) {
// optimizing (and needing to test).
// generate permuted order
- pollslice := sliceStruct{unsafe.Pointer(sel.pollorder), int(sel.ncase), int(sel.ncase)}
+ pollslice := slice{unsafe.Pointer(sel.pollorder), int(sel.ncase), int(sel.ncase)}
pollorder := *(*[]uint16)(unsafe.Pointer(&pollslice))
for i := 0; i < int(sel.ncase); i++ {
pollorder[i] = uint16(i)
@@ -255,7 +255,7 @@ func selectgoImpl(sel *hselect) (uintptr, uint16) {
// sort the cases by Hchan address to get the locking order.
// simple heap sort, to guarantee n log n time and constant stack footprint.
- lockslice := sliceStruct{unsafe.Pointer(sel.lockorder), int(sel.ncase), int(sel.ncase)}
+ lockslice := slice{unsafe.Pointer(sel.lockorder), int(sel.ncase), int(sel.ncase)}
lockorder := *(*[]*hchan)(unsafe.Pointer(&lockslice))
for i := 0; i < int(sel.ncase); i++ {
j := i