aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/io
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2013-01-29 20:52:43 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2013-01-29 20:52:43 +0000
commitd6f2922e91928b5191a5c5f1b3a6b320712b5ce3 (patch)
tree4f2fad1f4b778519bdd5941185c7e1d032af055b /libgo/go/io
parent91bfca59095b1cca9d4364996866848eaaf76c26 (diff)
downloadgcc-d6f2922e91928b5191a5c5f1b3a6b320712b5ce3.zip
gcc-d6f2922e91928b5191a5c5f1b3a6b320712b5ce3.tar.gz
gcc-d6f2922e91928b5191a5c5f1b3a6b320712b5ce3.tar.bz2
libgo: Update Go library to master revision 15489/921e53d4863c.
From-SVN: r195560
Diffstat (limited to 'libgo/go/io')
-rw-r--r--libgo/go/io/ioutil/blackhole.go18
-rw-r--r--libgo/go/io/ioutil/blackhole_race.go13
-rw-r--r--libgo/go/io/ioutil/ioutil.go1
3 files changed, 15 insertions, 17 deletions
diff --git a/libgo/go/io/ioutil/blackhole.go b/libgo/go/io/ioutil/blackhole.go
index c127bdb..101d2c1 100644
--- a/libgo/go/io/ioutil/blackhole.go
+++ b/libgo/go/io/ioutil/blackhole.go
@@ -2,12 +2,22 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !race
-
package ioutil
-var blackHoleBuf = make([]byte, 8192)
+var blackHoleBuf = make(chan []byte, 1)
func blackHole() []byte {
- return blackHoleBuf
+ select {
+ case b := <-blackHoleBuf:
+ return b
+ default:
+ }
+ return make([]byte, 8192)
+}
+
+func blackHolePut(p []byte) {
+ select {
+ case blackHoleBuf <- p:
+ default:
+ }
}
diff --git a/libgo/go/io/ioutil/blackhole_race.go b/libgo/go/io/ioutil/blackhole_race.go
deleted file mode 100644
index eb640e0..0000000
--- a/libgo/go/io/ioutil/blackhole_race.go
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build race
-
-package ioutil
-
-// Replaces the normal fast implementation with slower but formally correct one.
-
-func blackHole() []byte {
- return make([]byte, 8192)
-}
diff --git a/libgo/go/io/ioutil/ioutil.go b/libgo/go/io/ioutil/ioutil.go
index 31c7729..0eb146c 100644
--- a/libgo/go/io/ioutil/ioutil.go
+++ b/libgo/go/io/ioutil/ioutil.go
@@ -132,6 +132,7 @@ func (devNull) Write(p []byte) (int, error) {
func (devNull) ReadFrom(r io.Reader) (n int64, err error) {
buf := blackHole()
+ defer blackHolePut(buf)
readSize := 0
for {
readSize, err = r.Read(buf)