The Go programming language
Go to file
Keith Randall 3278dc158e runtime: pass key/value to map accessors by reference, not by value.
This change is part of the plan to get rid of all vararg C calls
which are a pain for getting exact stack scanning.

We allocate a chunk of zero memory to return a pointer to when a
map access doesn't find the key.  This is simpler than returning nil
and fixing things up in the caller.  Linker magic allocates a single
zero memory area that is shared by all (non-reflect-generated) map
types.

Passing things by reference gets rid of some copies, so it speeds
up code with big keys/values.

benchmark             old ns/op    new ns/op    delta
BenchmarkBigKeyMap           34           31   -8.48%
BenchmarkBigValMap           37           30  -18.62%
BenchmarkSmallKeyMap         26           23  -11.28%

R=golang-dev, dvyukov, khr, rsc
CC=golang-dev
https://golang.org/cl/14794043
2013-12-02 13:05:04 -08:00
api api: add go1.2.txt, use in tests 2013-10-18 13:36:59 +09:00
doc doc/install.html: fix a tag. 2013-11-25 13:36:16 +11:00
include build: remove various uses of C undefined behavior 2013-09-09 15:07:23 -04:00
lib plan9: correct create permissions with union directory 2013-10-23 10:28:28 -04:00
misc misc/vim: send Fmt errors to the quickfix list instead of the location list. 2013-11-27 19:32:15 +11:00
src runtime: pass key/value to map accessors by reference, not by value. 2013-12-02 13:05:04 -08:00
test test: revert unintentional commits 2013-11-19 15:36:13 +04:00
.hgignore build: ignore new zfiles, delete temp goplay binary in run.bash 2013-08-02 19:14:13 -07:00
.hgtags tag go1.2 2013-12-02 09:06:41 +11:00
AUTHORS A+C: Richard Musiol (individual CLA) 2013-11-12 09:57:00 -08:00
CONTRIBUTORS C: add Marko Mikulicic (Google CLA) 2013-11-15 11:01:54 -08:00
LICENSE
PATENTS
README README: Fix installation instructions 2013-11-20 13:47:37 -08:00
favicon.ico godoc: update favicon 2012-10-11 17:02:36 +11:00
robots.txt

README

This is the source code repository for the Go programming language.  

For documentation about how to install and use Go,
visit http://golang.org/ or load doc/install-source.html
in your web browser.

After installing Go, you can view a nicely formatted
doc/install-source.html by running godoc --http=:6060
and then visiting http://localhost:6060/doc/install/source.

Unless otherwise noted, the Go source files are distributed
under the BSD-style license found in the LICENSE file.

--

Binary Distribution Notes

If you have just untarred a binary Go distribution, you need to set
the environment variable $GOROOT to the full path of the go
directory (the one containing this README).  You can omit the
variable if you unpack it into /usr/local/go, or if you rebuild
from sources by running all.bash (see doc/install.html).
You should also add the Go binary directory $GOROOT/bin
to your shell's path.

For example, if you extracted the tar file into $HOME/go, you might
put the following in your .profile:

    export GOROOT=$HOME/go
    export PATH=$PATH:$GOROOT/bin

See doc/install.html for more details.