summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* [dev.cc] cmd/internal/obj: set ctxt.Windows != 0 on windowsdev.ccRuss Cox2015-02-231-0/+5
| | | | | | | | | May fix windows build. Change-Id: Ic4e32a4478caf758da6b02bc9126ddacb0fc07e0 Reviewed-on: https://go-review.googlesource.com/5650 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Rob Pike <r@golang.org>
* [dev.cc] cmd/5g etc: code cleanup: delay var decls and eliminate dead codeRuss Cox2015-02-2365-6826/+4093
| | | | | | | | | | | | | | | | | Ran rsc.io/grind rev 6f0e601 on the source files. The cleanups move var declarations as close to the use as possible, splitting disjoint uses of the var into separate variables. They also remove dead code (especially in func sudoaddable), which helps with the var moving. There's more cleanup to come, but this alone cuts the time spent compiling html/template on my 2013 MacBook Pro from 3.1 seconds to 2.3 seconds. Change-Id: I4de499f47b1dd47a560c310bbcde6b08d425cfd6 Reviewed-on: https://go-review.googlesource.com/5637 Reviewed-by: Rob Pike <r@golang.org>
* [dev.cc] cmd/6a, cmd/6g etc: replace C implementations with Go implementationsRuss Cox2015-02-23175-97603/+856
| | | | | | Change-Id: I58e00a39cf63df07813d21453f91e68eef6a413c Reviewed-on: https://go-review.googlesource.com/5635 Reviewed-by: Rob Pike <r@golang.org>
* [dev.cc] cmd/dist, cmd/go: stop building C implementations of compilers, ↵Russ Cox2015-02-234-62/+20
| | | | | | | | | | assemblers Also stop building objwriter, which was only used by them. Change-Id: Ia2353abd9426026a81a263cb46a72dd39c360ce4 Reviewed-on: https://go-review.googlesource.com/5634 Reviewed-by: Rob Pike <r@golang.org>
* [dev.cc] cmd/internal/gc: reconvert to pick up bug fixesRuss Cox2015-02-237-15/+27
| | | | | | | | | | | | | Convert using rsc.io/c2go rev a97ff47. Notable changes: - %% in format string now correctly preserved - reintroduce "signal handler" to hide internal faults after errors have been printed Change-Id: Ic5a94f1c3a8015a9054e21c8969b52d964a36c45 Reviewed-on: https://go-review.googlesource.com/5633 Reviewed-by: Rob Pike <r@golang.org>
* [dev.cc] cmd/asm: add end to end test for amd64Rob Pike2015-02-236-55/+212
| | | | | | Change-Id: I40839c2d1c0c105a5ba9aadcb55a13693bf4afa6 Reviewed-on: https://go-review.googlesource.com/5592 Reviewed-by: Russ Cox <rsc@golang.org>
* [dev.cc] cmd/go: do not install tools while executing themRuss Cox2015-02-231-1/+19
| | | | | | Change-Id: I3417efc203f555a0a6101701f387ead84f9a08d1 Reviewed-on: https://go-review.googlesource.com/5577 Reviewed-by: Rob Pike <r@golang.org>
* [dev.cc] all: merge master (6a10f72) into dev.ccRuss Cox2015-02-2312-148/+187
|\ | | | | | | | | | | To pick up darwin/arm fix and hopefully fix build. Change-Id: I06996d0b13b777e476f65405aee031482fc76439
| * math/big: don't return io.EOF on successful call of ParseFloatRobert Griesemer2015-02-232-14/+9
| | | | | | | | | | | | | | | | Fixes $9938. Change-Id: Ie8680a875225748abd660fb26b4c25546e7b92d3 Reviewed-on: https://go-review.googlesource.com/5620 Reviewed-by: Alan Donovan <adonovan@google.com>
| * runtime: Add prefetch to allocation codeRick Hudson2015-02-231-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The routine mallocgc retrieves objects from freelists. Prefetch the object that will be returned in the next call to mallocgc. Experiments indicate that this produces a 1% improvement when using prefetchnta and less when using prefetcht0, prefetcht1, or prefetcht2. Benchmark numbers indicate a 1% improvement over no prefetch, much less over prefetcht0, prefetcht1, and prefetcht2. These numbers were for the garbage benchmark with MAXPROCS=4 no prefetch >> 5.96 / 5.77 / 5.89 prefetcht0(uintptr(v.ptr().next)) >> 5.88 / 6.17 / 5.84 prefetcht1(uintptr(v.ptr().next)) >> 5.88 / 5.89 / 5.91 prefetcht2(uintptr(v.ptr().next)) >> 5.87 / 6.47 / 5.92 prefetchnta(uintptr(v.ptr().next)) >> 5.72 / 5.84 / 5.85 Change-Id: I54e07172081cccb097d5b5ce8789d74daa055ed9 Reviewed-on: https://go-review.googlesource.com/5350 Reviewed-by: Dmitry Vyukov <dvyukov@google.com> Reviewed-by: Austin Clements <austin@google.com>
| * go/token: document that column positions and file offsets are in bytesRobert Griesemer2015-02-231-3/+3
| | | | | | | | | | | | | | | | Fixes #9948. Change-Id: I7b354fccd5e933eeeb2253a66acec050ebff6e41 Reviewed-on: https://go-review.googlesource.com/5611 Reviewed-by: Alan Donovan <adonovan@google.com>
| * math/big: incorporated feedback from prior TBR reviewsRobert Griesemer2015-02-234-28/+36
| | | | | | | | | | | | Change-Id: Ida847365223ef09b4a3846e240b4bb6919cb0fe9 Reviewed-on: https://go-review.googlesource.com/5610 Reviewed-by: Alan Donovan <adonovan@google.com>
| * net/mail: move RFC 2047 code to internal/mimeAlexandre Cesaro2015-02-233-101/+126
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code concerning quoted-printable encoding (RFC 2045) and its variant for MIME headers (RFC 2047) is currently spread in mime/multipart and net/mail. It is also not exported. This commit is the second step to fix that issue. It moves the RFC 2047 encoding and decoding functions from net/mail to internal/mime. The exported API is unchanged. Updates #4943 Change-Id: I5f58aa58e74bbe4ec91b2e9b8c81921338053b00 Reviewed-on: https://go-review.googlesource.com/2101 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
| * cmd/go: link cgo into tests on darwin/armDavid Crawshaw2015-02-231-0/+9
| | | | | | | | | | | | | | | | | | We currently have only one supported darwin/arm device, a locked iOS machine. It requires cgo binaries. Change-Id: If36a152e6a743e4a58ea3470e62cccb742630a5d Reviewed-on: https://go-review.googlesource.com/5443 Reviewed-by: Russ Cox <rsc@golang.org>
* | [dev.cc] runtime, syscall: add names to FP offsets in freebsd, netbsd arm ↵Russ Cox2015-02-234-216/+216
| | | | | | | | | | | | | | | | | | | | | | | | | | | | assembly Makes them compatible with the new asm. Applied mechanically from vet diagnostics. Manual edits: the names for arguments in time·now(SB) in runtime/sys_*_arm.s. Change-Id: Ib295390d9509d306afc67714e3f50dc832256625 Reviewed-on: https://go-review.googlesource.com/5576 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Rob Pike <r@golang.org>
* | [dev.cc] cmd/new6g, etc: reconvert to add profilingRuss Cox2015-02-236-1/+53
| | | | | | | | | | | | | | | | | | Converted from rsc.io/c2go rev a9bc7f2. Adds profiling support. Change-Id: Ie04f86b71e0713c7294416c77d349e0d93798403 Reviewed-on: https://go-review.googlesource.com/5574 Reviewed-by: Rob Pike <r@golang.org>
* | [dev.cc] all: merge master (48469a2) into dev.ccRuss Cox2015-02-2333-956/+2105
|\ \ | |/ | | | | Change-Id: I10f7950d173b302151f2a31daebce297b4306ebe
| * cmd/ld: fix warning on Plan 9David du Colombier2015-02-231-1/+1
| | | | | | | | | | | | | | | | cpp: src/cmd/ld/lib.h:349 No newline at end of file Change-Id: Id21851963f7778364ba9337da3bacd312443f51f Reviewed-on: https://go-review.googlesource.com/5520 Reviewed-by: Minux Ma <minux@golang.org>
| * runtime: remove unneeded C header filesMatthew Dempsky2015-02-232-27/+0
| | | | | | | | | | | | | | Change-Id: I239ae86cfebfece607dce39a96d9123cbacbee7d Reviewed-on: https://go-review.googlesource.com/5562 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Minux Ma <minux@golang.org>
| * net/http: Removed some unused constants in request.go.Aaron Jacobs2015-02-221-3/+0
| | | | | | | | | | | | Change-Id: I05cdf357249166a45105703e9317793aa2088844 Reviewed-on: https://go-review.googlesource.com/5560 Reviewed-by: Andrew Gerrand <adg@golang.org>
| * gdb: fix "gdb.error: No struct named reflect.rtype."Jan Kratochvil2015-02-221-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With a trivial Golang-built program loaded in gdb-7.8.90.20150214-7.fc23.x86_64 I get this error: (gdb) source ./src/runtime/runtime-gdb.py Loading Go Runtime support. Traceback (most recent call last): File "./src/runtime/runtime-gdb.py", line 230, in <module> _rctp_type = gdb.lookup_type("struct reflect.rtype").pointer() gdb.error: No struct type named reflect.rtype. (gdb) q No matter if this struct should or should not be in every Golang-built binary this change should fix that with no disadvantages. Change-Id: I0c490d3c9bbe93c65a2183b41bfbdc0c0f405bd1 Reviewed-on: https://go-review.googlesource.com/5521 Reviewed-by: Ian Lance Taylor <iant@golang.org>
| * Call --> CallSlice in two spots. No logic change, docs only.Mark Bucciarelli2015-02-221-2/+2
| | | | | | | | | | | | Change-Id: I6011e162214db2d65efc1ecdb5ec600ca8e5bfe9 Reviewed-on: https://go-review.googlesource.com/5542 Reviewed-by: Ian Lance Taylor <iant@golang.org>
| * cmd/trace: add new commandDmitry Vyukov2015-02-209-666/+1894
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Trace command allows to visualize and analyze traces. Run as: $ go tool trace binary trace.file The commands opens web browser with the main page, which contains links for trace visualization, blocking profiler, network IO profiler and per-goroutine traces. Also move trace parser from runtime/pprof/trace_parser_test.go to internal/trace/parser.go, so that it can be shared between tests and the command. Change-Id: Ic97ed59ad6e4c7e1dc9eca5e979701a2b4aed7cf Reviewed-on: https://go-review.googlesource.com/3601 Reviewed-by: Andrew Gerrand <adg@golang.org>
| * runtime/race: update race runtime to rev 229396Dmitry Vyukov2015-02-205-1/+1
| | | | | | | | | | | | | | | | | | | | Fixes #9720 Fixes #8053 Fixes https://code.google.com/p/thread-sanitizer/issues/detail?id=89 Change-Id: I7d598e53de86586bb9702d8e9276a4d6aece2dfc Reviewed-on: https://go-review.googlesource.com/4950 Reviewed-by: Ian Lance Taylor <iant@golang.org>
| * runtime: adjust program counters in race detectorDmitry Vyukov2015-02-203-20/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In most cases we pass return PC to race detector, and race runtime subtracts one from them. However, in manual instrumentation in runtime we pass function start PC to race runtime. Race runtime can't distinguish these cases and so it does not subtract one from top PC. This leads to bogus line numbers in some cases. Make it consistent and always pass what looks like a return PC, so that race runtime can subtract one and still get PC in the same function. Also delete two unused functions. Update #8053 Change-Id: I4242dec5e055e460c9a8990eaca1d085ae240ed2 Reviewed-on: https://go-review.googlesource.com/4902 Reviewed-by: Ian Lance Taylor <iant@golang.org>
| * runtime: split gc_m into gcMark and gcSweepRuss Cox2015-02-203-116/+76
| | | | | | | | | | | | | | | | | | | | | | This is a nice split but more importantly it provides a better way to fit the checkmark phase into the sequencing. Also factor out common span copying into gcSpanCopy. Change-Id: Ia058644974e4ed4ac3cf4b017a3446eb2284d053 Reviewed-on: https://go-review.googlesource.com/5333 Reviewed-by: Austin Clements <austin@google.com>
| * runtime: unroll gc_m loopRuss Cox2015-02-201-14/+10
| | | | | | | | | | | | | | | | The loop made more sense when gc_m was not its own function. Change-Id: I71a7f21d777e69c1924e3b534c507476daa4dfdd Reviewed-on: https://go-review.googlesource.com/5332 Reviewed-by: Austin Clements <austin@google.com>
| * runtime: tidy GC driverRuss Cox2015-02-204-124/+96
| | | | | | | | | | | | Change-Id: I0da26e89ae73272e49e82c6549c774e5bc97f64c Reviewed-on: https://go-review.googlesource.com/5331 Reviewed-by: Austin Clements <austin@google.com>
| * runtime: fix cputicks on x86Dmitry Vyukov2015-02-204-12/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See the following issue for context: https://github.com/golang/go/issues/9729#issuecomment-74648287 In short, RDTSC can produce skewed results without preceding LFENCE/MFENCE. Information on this matter is very scrappy in the internet. But this is what linux kernel does (see rdtsc_barrier). It also fixes the test program on my machine. Update #9729 Change-Id: I3c1ffbf129fdfdd388bd5b7911b392b319248e68 Reviewed-on: https://go-review.googlesource.com/5033 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* | [dev.cc] cmd/go: fix expansion of cmdRuss Cox2015-02-231-1/+1
| | | | | | | | | | | | | | | | This was supposed to be in the previous CL, but I forgot to 'git rw' it down. Change-Id: Ia5e14ca2c7640f08abbbed1a777a6cf04d71d0e7 Reviewed-on: https://go-review.googlesource.com/5570 Reviewed-by: Russ Cox <rsc@golang.org>
* | [dev.cc] cmd/go: fix expansion of 'std', add 'cmd'Russ Cox2015-02-2311-60/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The wildcard 'std' is defined in documentation to be all the packages in the Go standard library. It has also historically matched commands in the main repo, but as we implement core commands in Go, that becomes problematic. We need a wildcard that means just the library, and since 'std' is already documented to have that definition, make it so. Add a new wildcard 'cmd' for the commands in the main repo ($GOROOT). Commands that want both can say 'std cmd' (or 'cmd std') to get the effect of the old 'std'. Update make.bash etc to say both std and cmd most of the time. Exception: in race.bash, do not install race-enabled versions of the actual commands. This avoids trying to write binaries while using them, but more importantly it avoids enabling the race detector and its associated memory overhead for the already memory-hungry compilers. Change-Id: I26bb06cb13b636dfbe71a015ee0babeb270a0275 Reviewed-on: https://go-review.googlesource.com/5550 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Rob Pike <r@golang.org>
* | [dev.cc] cmd/asm/internal/asm: fix test on windowsRuss Cox2015-02-211-0/+2
| | | | | | | | | | | | Change-Id: Ia6cf3204d71740bc2b6e26c53ac5206e8a33a180 Reviewed-on: https://go-review.googlesource.com/5540 Reviewed-by: Russ Cox <rsc@golang.org>
* | [dev.cc] cmd/go: reenable verifyCompilerRuss Cox2015-02-211-1/+1
| | | | | | | | | | | | Change-Id: Ic7367f2c6e6d4e6b802ce8436022412a1862ca58 Reviewed-on: https://go-review.googlesource.com/5472 Reviewed-by: Rob Pike <r@golang.org>
* | [dev.cc] cmd/new6g etc: reconvert from CRuss Cox2015-02-218-21/+75
| | | | | | | | | | | | | | | | | | | | Reconvert using rsc.io/c2go rev 27b3f59. (Same as last conversion, but C sources have changed due to merging master into this branch.) Change-Id: Ib314bb9ac14a726ceb83e2ecf4d1ad2d0b331c38 Reviewed-on: https://go-review.googlesource.com/5471 Reviewed-by: Rob Pike <r@golang.org>
* | [dev.cc] cmd/asm: fix build: broken end to end testRob Pike2015-02-212-9/+7
| | | | | | | | | | | | | | | | This time for sure. Change-Id: I77ed6b70d82a6f4ba371afba2f53c8b146ac110f Reviewed-on: https://go-review.googlesource.com/5530 Reviewed-by: Rob Pike <r@golang.org>
* | [dev.cc] cmd/asm: fix buildRob Pike2015-02-211-1/+3
| | | | | | | | | | | | | | | | | | | | Representation in printout of MRC instruction differs between 32- and 64-bit machines. It's just a hex dump. Fix this one day, but for now just comment out the instruction. Change-Id: I4709390659e2e0f2d18ff6f8e762f97cdbfb4c16 Reviewed-on: https://go-review.googlesource.com/5424 Reviewed-by: Rob Pike <r@golang.org>
* | [dev.cc] cmd/asm: add end-to-end testRob Pike2015-02-218-2/+1246
| | | | | | | | | | | | | | | | | | | | | | | | Add trivial golden test that verifies output matches expectation. The input is based on the old grammar and is intended to cover the space of the input language. PPC64 and ARM only for now; others to follow. Change-Id: Ib5957822bcafd5b9d4c1dea1c03cc6ee1238f7ef Reviewed-on: https://go-review.googlesource.com/5421 Reviewed-by: Russ Cox <rsc@golang.org>
* | [dev.cc] cm/asm: fix up arm after cross-check with 5aRob Pike2015-02-214-9/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | As with the previous round for ppc64, this CL fixes a couple of things that 5a supported but asm did not, both simple. 1) Allow condition code on MRC instruction; this was marked as a TODO. 2) Allow R(n) notation in ARM register shifts. The code needs a rethink but the tests we're leading toward will make the rewrite easier to test and trust. Change-Id: I5b52ad25d177a74cf07e089dddfeeab21863c424 Reviewed-on: https://go-review.googlesource.com/5422 Reviewed-by: Russ Cox <rsc@golang.org>
* | [dev.cc] crypto/md5, crypto/sha1: restore a few SP referencesRuss Cox2015-02-202-16/+16
| | | | | | | | | | | | | | | | | | | | Applying my post-submit comments from CL 5120. The rewrite there changed the code from writing to the stack frame to writing below the stack frame. Change-Id: Ie7e0563c0c1731fede2bcefeaf3c9d88a0cf4063 Reviewed-on: https://go-review.googlesource.com/5470 Reviewed-by: David Crawshaw <crawshaw@golang.org>
* | [dev.cc] cmd/asm: add ppc64le supportRuss Cox2015-02-201-0/+4
| | | | | | | | | | | | Change-Id: I780ed76c9217d387a73fd7530af2f40948aa1fe4 Reviewed-on: https://go-review.googlesource.com/5452 Reviewed-by: Rob Pike <r@golang.org>
* | [dev.cc] cmd/go: install cmd/asm as a toolRuss Cox2015-02-201-0/+1
| | | | | | | | | | | | | | | | cmd/dist was doing the right thing, but not cmd/go. Change-Id: I5412140cfc07e806152915cc49db7f63352d01ca Reviewed-on: https://go-review.googlesource.com/5451 Reviewed-by: Rob Pike <r@golang.org>
* | [dev.cc] runtime: print to stderr as well as android logdDavid Crawshaw2015-02-201-0/+3
| | | | | | | | | | | | | | | | Restores stack traces in the android/arm builder. Change-Id: If637aa2ed6f8886126b77cf9cc8a0535ec7c4369 Reviewed-on: https://go-review.googlesource.com/5453 Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
* | [dev.cc] cmd/asm: implement FMADD for ppc64Rob Pike2015-02-202-1/+9
| | | | | | | | | | | | | | | | Missed this one instruction in the previous pass. Change-Id: Ic8cdae4d3bfd626c6bbe0ce49fce28b53db2ad1c Reviewed-on: https://go-review.googlesource.com/5420 Reviewed-by: Russ Cox <rsc@golang.org>
* | [dev.cc] all: merge master (5868ce3) into dev.ccRuss Cox2015-02-20104-3697/+10118
|\ \ | |/ | | | | | | | | This time for sure! Change-Id: I7e7ea24edb7c2f711489e162fb97237a87533089
| * path/filepath: add example for filepath.SplitAndrew Gerrand2015-02-201-0/+28
| | | | | | | | | | | | | | | | Fixes #9928 Change-Id: Iab37051078755a132f211ad48e756422f7c55a39 Reviewed-on: https://go-review.googlesource.com/5416 Reviewed-by: Minux Ma <minux@golang.org>
| * net, syscall: more accurate parsers for routing messages on BSD variantsMikio Hara2015-02-2014-250/+740
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes fixes two issues with regard to handling routing messages as follows: - Misparsing on platforms (such as FreeBSD) supporting multiple architectures in the same kernel (kern.supported_archs="amd64 i386") - Misparsing with unimplemented messages such as route, interface address state notifications To fix those issues, this change implements all the required socket address parsers, adds a processor architecture identifying function to FreeBSD and tests. Fixes #9707. Fixes #8203. Change-Id: I7ed7b4a0b6f10f54b29edc681a2f35603f2d8d45 Reviewed-on: https://go-review.googlesource.com/4330 Reviewed-by: Ian Lance Taylor <iant@golang.org>
| * cmd/go: simplify/fix handling private github reposIngo Oeser2015-02-201-22/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before Go 1.4, the traditional way to work with a private Github repository was to run something similar the following: ``` git config --global url."git@github.com:".insteadOf "https://github.com/" ``` It would allow go get and friends to transparently work as expected, automatically rewriting https URLs to use SSH for auth. This worked both when pushing and pulling. In Go 1.4 this broke, now requiring the use of `go get -f` instead of `go get` in order to fetch private repositories. This seems neither intended nor practical, as it requires changing a lot of tooling. So just use `git config remote.origin.url` instead of `git remote -v` as this reflects the actual substitution intended in the `insteadOf` config directive. Also remove now useless parsing. Also add a check against supported schemes to avoid errors in later commands using this URL and expecting such a scheme. Fixes #9697 Change-Id: I907327f83504302288f913a68f8222a5c2d673ee Reviewed-on: https://go-review.googlesource.com/3504 Reviewed-by: Andrew Gerrand <adg@golang.org>
| * cmd/dist: show friendlier error message when building outside a Git repoAndrew Gerrand2015-02-191-0/+21
| | | | | | | | | | | | | | | | Fixes #9932 Change-Id: I7943470a1784278a5c6e99c3b66c59d4953734ba Reviewed-on: https://go-review.googlesource.com/5340 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
| * runtime: do not unmap work.spans until after checkmark phaseRuss Cox2015-02-191-9/+8
| | | | | | | | | | | | | | | | | | This is causing crashes. Change-Id: I1832f33d114bc29894e491dd2baac45d7ab3a50d Reviewed-on: https://go-review.googlesource.com/5330 Reviewed-by: Rick Hudson <rlh@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
| * runtime: missed change from reorganization CLRuss Cox2015-02-191-1/+3
| | | | | | | | | | | | | | | | | | That is, I accidentally dropped this change of Austin's when preparing my CL. I blame Git. Change-Id: I9dd772c84edefad96c4b16785fdd2dea04a4a0d6 Reviewed-on: https://go-review.googlesource.com/5320 Reviewed-by: Austin Clements <austin@google.com>