]> Cypherpunks repositories - gostls13.git/commitdiff
reflect: use SelectDir instead of uintptr in runtimeSelect
authorDominik Honnef <dominik@honnef.co>
Mon, 14 Mar 2016 00:59:22 +0000 (01:59 +0100)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 14 Mar 2016 01:55:31 +0000 (01:55 +0000)
And fix the wrong comment.

Initially found this because the comment was wrong about the possible
values. Then noticed that there doesn't seem to be any reason to use
uintptr over SelectDir.

Change-Id: I4f9f9640e49d89e558ed00bd99e57dab890785f5
Reviewed-on: https://go-review.googlesource.com/20655
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/reflect/value.go

index 95bfdb561cc16e9f6946d1d6158ede5e45b75977..2cb4c296d19105762a0e12f45cc1c9f48ca90572 100644 (file)
@@ -1876,7 +1876,7 @@ func Copy(dst, src Value) int {
 // A runtimeSelect is a single case passed to rselect.
 // This must match ../runtime/select.go:/runtimeSelect
 type runtimeSelect struct {
-       dir uintptr        // 0, SendDir, or RecvDir
+       dir SelectDir      // SelectSend, SelectRecv or SelectDefault
        typ *rtype         // channel type
        ch  unsafe.Pointer // channel
        val unsafe.Pointer // ptr to data (SendDir) or ptr to receive buffer (RecvDir)
@@ -1939,7 +1939,7 @@ func Select(cases []SelectCase) (chosen int, recv Value, recvOK bool) {
        haveDefault := false
        for i, c := range cases {
                rc := &runcases[i]
-               rc.dir = uintptr(c.Dir)
+               rc.dir = c.Dir
                switch c.Dir {
                default:
                        panic("reflect.Select: invalid Dir")
@@ -2002,7 +2002,7 @@ func Select(cases []SelectCase) (chosen int, recv Value, recvOK bool) {
        }
 
        chosen, recvOK = rselect(runcases)
-       if runcases[chosen].dir == uintptr(SelectRecv) {
+       if runcases[chosen].dir == SelectRecv {
                tt := (*chanType)(unsafe.Pointer(runcases[chosen].typ))
                t := tt.elem
                p := runcases[chosen].val