- 15 Sep, 2017 10 commits
-
-
isharipo authored
This change makes it easier to express instructions with arbitrary number of operands. Rationale: previous approach with operand "hiding" does not scale well, AVX and especially AVX512 have many instructions with 3+ operands. x86 asm backend is updated to handle up to 6 explicit operands. It also fixes issue with 4-th immediate operand type checks. All `ytab` tables are updated accordingly. Changes to non-x86 backends only include these patterns: `p.From3 = X` => `p.SetFrom3(X)` `p.From3.X = Y` => `p.GetFrom3().X = Y` Over time, other backends can adapt Prog.RestArgs and reduce the amount of workarounds. -- Performance -- x/benchmark/build: $ benchstat upstream.bench patched.bench name old time/op new time/op delta Build-48 21.7s ± 2% 21.8s ± 2% ~ (p=0.218 n=10+10) name old binary-size new binary-size delta Build-48 10.3M ± 0% 10.3M ± 0% ~ (all equal) name old build-time/op new build-time/op delta Build-48 21.7s ± 2% 21.8s ± 2% ~ (p=0.218 n=10+10) name old build-peak-RSS-bytes new build-peak-RSS-bytes delta Build-48 145MB ± 5% 148MB ± 5% ~ (p=0.218 n=10+10) name old build-user+sys-time/op new build-user+sys-time/op delta Build-48 21.0s ± 2% 21.2s ± 2% ~ (p=0.075 n=10+10) Microbenchmark shows a slight slowdown. name old time/op new time/op delta AMD64asm-4 49.5ms ± 1% 49.9ms ± 1% +0.67% (p=0.001 n=23+15) func BenchmarkAMD64asm(b *testing.B) { for i := 0; i < b.N; i++ { TestAMD64EndToEnd(nil) TestAMD64Encoder(nil) } } Change-Id: I4f1d37b5c2c966da3f2127705ccac9bff0038183 Reviewed-on: https://go-review.googlesource.com/63490 Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Alessandro Arzilli authored
Variables captured by a closure were always assigned to the root scope in their declaration function. Using decl.Name.Defn.Pos will result in the correct scope for both the declaration function and the capturing function. Fixes #21515 Change-Id: I3960aface3c4fc97e15b36191a74a7bed5b5ebc1 Reviewed-on: https://go-review.googlesource.com/56830 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Emmanuel Odeke authored
Return early from deltimer, with false as the result, to indicate that we couldn't delete the timer since its timersBucket was nil(not set) in the first place. That happens in such a case where a user created the timer from a Ticker with: t := time.Ticker{C: c} The above usage skips the entire setup of assigning the appropriate underlying runtimeTimer and timersBucket, steps that are done for us by time.NewTicker. CL 34784 introduced this bug with an optimization, by changing stopTimer to retrieve the timersBucket from the timer itself (which is unset with the mentioned usage pattern above), whereas the old behavior relied on indexing by goroutine ID into the global slice of runtime timers, to retrieve the appropriate timersBucket. Fixes #21874 Change-Id: Ie9ccc6bdee685414b2430dc4aa74ef618cea2b33 Reviewed-on: https://go-review.googlesource.com/63970 Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Matthew Dempsky authored
Change-Id: I728c5606882ece949d58e86f9558fc16ae4ffd85 Reviewed-on: https://go-review.googlesource.com/64052 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Matthew Dempsky authored
Passes toolstash-check -all. Change-Id: I1c85a2c0390517f4e9cdbddddbf3c353edca65b3 Reviewed-on: https://go-review.googlesource.com/64051 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ian Lance Taylor authored
This change has no real effect in itself. This is to prepare for a followup change that will call lockOSThread during a cgo callback when there is no p assigned, and therefore when lockOSThread can not use a write barrier. Change-Id: Ia122d41acf54191864bcb68f393f2ed3b2f87abc Reviewed-on: https://go-review.googlesource.com/63630 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
David Crawshaw authored
The compiler replaces any path of the form /path/to/goroot/src/net/port.go with GOROOT/src/net/port.go so that the same object file is produced if the GOROOT is moved. It was skipping this transformation for any absolute path into the GOROOT that came from //line directives, such as those generated by cmd/cgo. Fixes #21373 Fixes #21720 Fixes #21825 Change-Id: I2784c701b4391cfb92e23efbcb091a84957d61dd Reviewed-on: https://go-review.googlesource.com/63693 Run-TryBot: David Crawshaw <crawshaw@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Todd Neal authored
Change-Id: Idfb64fcb26f48d5b70bab872f9a3d96a036be681 Reviewed-on: https://go-review.googlesource.com/63950 Run-TryBot: Todd Neal <todd@tneal.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
Kunpei Sakai authored
a -> an Change-Id: I7362bdc199e83073a712be657f5d9ba16df3077e Reviewed-on: https://go-review.googlesource.com/63850Reviewed-by: Rob Pike <r@golang.org>
-
Emmanuel Odeke authored
Previously, if CGO_ENABLED=0 was set when building with -msan, the error message printed was: -race requires cgo; enable cgo by setting CGO_ENABLED=1 yet the instrumentation flag passed in was -msan. This CL fixes that message to correctly report that -msan needed CGO_ENABLED=1, and likewise if -race, report -race needed it. Fixes #21895 Change-Id: If423d520daae7847fb38cc97c3192ada5d960f9d Reviewed-on: https://go-review.googlesource.com/63930 Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
- 14 Sep, 2017 8 commits
-
-
Michael Munday authored
Add generic rules to propagate floating point constants through comparisons and integer conversions. These new rules seldom trigger in the standard library so there is no performance change, however I think it is worth adding them anyway for completeness. Change-Id: I9db5222746508a2996f1cafb72f4e0cf2541de07 Reviewed-on: https://go-review.googlesource.com/63795 Run-TryBot: Michael Munday <mike.munday@ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
Lynn Boger authored
The functions Float64bits and Float64frombits perform poorly on ppc64x because the int<->float conversions often result in load and store sequences to handle the type change. This patch adds more rules to recognize those sequences and use register to register moves and avoid unnecessary loads and stores where possible. There were some existing rules to improve these conversions, but this provides additional improvements. Included here: - New instruction FCFIDS to improve on conversion to 32 bit - Rename Xf2i64 and Xi2f64 as MTVSRD, MFVSRD, to match the asm - Add rules to lower some of the load/store sequences for - Added new go asm to ppc64.s testcase. conversions Improvements: BenchmarkAbs-16 2.16 0.93 -56.94% BenchmarkCopysign-16 2.66 1.18 -55.64% BenchmarkRound-16 4.82 2.69 -44.19% BenchmarkSignbit-16 1.71 1.14 -33.33% BenchmarkFrexp-16 11.4 7.94 -30.35% BenchmarkLogb-16 10.4 7.34 -29.42% BenchmarkLdexp-16 15.7 11.2 -28.66% BenchmarkIlogb-16 10.2 7.32 -28.24% BenchmarkPowInt-16 69.6 55.9 -19.68% BenchmarkModf-16 10.1 8.19 -18.91% BenchmarkLog2-16 17.4 14.3 -17.82% BenchmarkCbrt-16 45.0 37.3 -17.11% BenchmarkAtanh-16 57.6 48.3 -16.15% BenchmarkRemainder-16 76.6 65.4 -14.62% BenchmarkGamma-16 26.0 22.5 -13.46% BenchmarkPowFrac-16 197 174 -11.68% BenchmarkMod-16 112 99.8 -10.89% BenchmarkAsinh-16 59.9 53.7 -10.35% BenchmarkAcosh-16 44.8 40.3 -10.04% Updates #21390 Change-Id: I56cc991fc2e55249d69518d4e1ba76cc23904e35 Reviewed-on: https://go-review.googlesource.com/63290Reviewed-by: Michael Munday <mike.munday@ibm.com>
-
Daniel Martí authored
Rework the test to work with any number of std packages. This was done to include a few funcs from unicode/utf8. Adding more will be much simpler too. While at it, add more runtime funcs by searching for "inlined" or "inlining" in the git log of its directory. These are: addb, subtractb, fastrand and noescape. Updates #21851. Change-Id: I4fb2bd8aa6a5054218f9b36cb19d897ac533710e Reviewed-on: https://go-review.googlesource.com/63611 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
zhongtao.chen authored
If the Go packages with enough source files,it will cause EMFILE/ENFILE error, Fix this by limiting the number of simultaneously opened files. Fixes #21621 Change-Id: I8555d79242d2f90771e37e073b7540fc7194a64a Reviewed-on: https://go-review.googlesource.com/57751 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Ian Lance Taylor authored
It's not needed, and the current expectation is that it will go away in the future. Change-Id: I5f46800e748d9ffa484bda6d1738290c8e00ac2b Reviewed-on: https://go-review.googlesource.com/63751 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Bryan Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Burak Guven authored
Shuffle panics if n < 0, not n <= 0. The comment for the (*Rand).Shuffle function is already accurate. Change-Id: I073049310bca9632e50e9ca3ff79eec402122793 Reviewed-on: https://go-review.googlesource.com/63750Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Bryan C. Mills authored
rune has a well-defined size, but C.int is implementation-specified. Using one as the other should require an explicit conversion. updates #13467 Change-Id: I53ab2478427dca790efdcc197f6b8d9fbfbd1847 Reviewed-on: https://go-review.googlesource.com/63730Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Bryan C. Mills authored
I had passed 1 instead of 2 to the SplitAfterN call in errorstest.check, so all of the cases were erroneously falling through to the non-regexp case (and passing even if the actual error didn't match). Now, we use bytes.HasSuffix to check for the non-regexp case, so we will not incorrectly match a regexp comment to the non-regexp case. updates #13467 Change-Id: Ia6be928a495425f2b7bae5001bd01346e115dcfa Reviewed-on: https://go-review.googlesource.com/63692Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
- 13 Sep, 2017 14 commits
-
-
Ian Lance Taylor authored
Fixes #21559 Change-Id: I3393c4bee4c84fe0724a9c9aeb1a809b1a92eea6 Reviewed-on: https://go-review.googlesource.com/63650 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Joe Tsai <joetsai@google.com>
-
Matthew Dempsky authored
These two special cases are unnecessary: 1) "~b%d" references only appear during walk, to handle "return" statements implicitly assigning to blank result parameters. Even if they could appear, the "inlined and customized version" accidentally diverged from p.sym in golang.org/cl/33911. 2) The Vargen case is already identical to the default case, and it never overlaps with the remaining "T.method" case. Passes toolstash-check. Change-Id: I03f7e5b75b707b43afc8ed6eb90f43ba93ed17ae Reviewed-on: https://go-review.googlesource.com/63272 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com>
-
Tobias Klauser authored
Extract device major/minor number on all the BSDs and set Devmajor and Devminor in FileInfoHeader. Code based on the corresponding Major/Minor implementations in golang.org/x/sys/unix. Change-Id: Ieffa7ce0cdbe6481950de666b2f5f88407a32382 Reviewed-on: https://go-review.googlesource.com/63470Reviewed-by: Joe Tsai <joetsai@google.com>
-
Matthew Dempsky authored
We only export packages that typechecked successfully, and OTYPE nodes will always have their Type field set. Changes the package export format, but only in the compiler-specific section. No version bump necessary. Change-Id: I722f5827e73948fceb0432bc8b3b22471fea8f61 Reviewed-on: https://go-review.googlesource.com/63273 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com>
-
Daniel Martí authored
Move it from the runtime package, as we will soon add more packages and functions for it to check. The test used the testEnv func, which cleaned certain environment variables from a command, so it was moved to internal/testenv under a more descriptive (and less ambiguous) name. Add a simple godoc to it too. For #21851. Change-Id: I6f39c1f23b45377718355fafe66ffd87047d8ab6 Reviewed-on: https://go-review.googlesource.com/63550 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ilya Tocar <ilya.tocar@intel.com>
-
Bryan C. Mills authored
This makes the test easier to run in isolation and easier to change, and simplifies the code to run the tests in parallel. updates #13467 Change-Id: I5622b5cc98276970347da18e95d071dbca3c5cc1 Reviewed-on: https://go-review.googlesource.com/63276 Run-TryBot: Bryan Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Sam Whited authored
Fixes #19480 Change-Id: I5a621507279d5bb1f3991b7a412d9a63039d464b Reviewed-on: https://go-review.googlesource.com/38791 Run-TryBot: Sam Whited <sam@samwhited.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Tyler Bui-Palsulich authored
I modified verify() to fail every time to test the change. Before adding t.Helper() (line 37 is in verify()): /.../go/src/container/heap/heap_test.go:37: forced failure FAIL Afer adding t.Helper() (line 67 is where verify() is called): /.../go/src/container/heap/heap_test.go:67: forced failure FAIL Fixes #21863 Change-Id: I46f0c8ec413cc664358c568fc53e48bb4a1d03d0 Reviewed-on: https://go-review.googlesource.com/63570Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Daniel Martí authored
Found with staticcheck. Not terribly important since the test would likely fail anyway, but at least it will fail with a better explanation now. Change-Id: Ic3f9a94a2152404b7873cc8cd47b6db79d78c2e6 Reviewed-on: https://go-review.googlesource.com/62990 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Michael Munday authored
Change-Id: I521ba94356165efc3252ca4b3d364a2bbabd4aab Reviewed-on: https://go-review.googlesource.com/58010 Run-TryBot: Michael Munday <mike.munday@ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Martin Möhrmann authored
This makes it easier to deduce from the field names which overflow field corresponds to h.buckets and which to h.oldbuckets by aligning the naming with the buckets fields in hmap. Change-Id: I8d6a729229a190db0212bac012ead1a3c13cf5d0 Reviewed-on: https://go-review.googlesource.com/62411 Run-TryBot: Martin Möhrmann <moehrmann@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
Martin Möhrmann authored
Move the check near the code in evacuate that relies on the relation evacuateX+1 == evacuateY. If the relation is fullfilled the check is known to be true at compile time and removed by the compiler. Change-Id: I711b75e09047bf347819ccaeec41d244a5883867 Reviewed-on: https://go-review.googlesource.com/62410 Run-TryBot: Martin Möhrmann <moehrmann@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
Wei Xiao authored
Current implementation doesn't recognize parentheses that may appear in flags of assembly function as shown below: TEXT ·makeFuncStub(SB),(NOSPLIT|WRAPPER),$24 It results in vet reporting false positives and a lot of whitelists are added for suppressing the false alarms. This CL fixes the issue and eliminates the redundant whitelists. Change-Id: Idbc1b42965b31cea8ee7c23d1a6f62feb68e844c Reviewed-on: https://go-review.googlesource.com/62850 Run-TryBot: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
Bryan C. Mills authored
Previously, test7978 failed if the user did not invoke it with GOTRACEBACK=2 already set in their environment. Environment-sensitive test are awkward, and in this case there is a very simple workaround: set the traceback level to the necessary value explicitly. Change-Id: I7d576f24138aa8a41392148eae11bbeaef558573 Reviewed-on: https://go-review.googlesource.com/63275 Run-TryBot: Bryan Mills <bcmills@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
- 12 Sep, 2017 8 commits
-
-
Ilya Tocar authored
Avoid division in common case. There are 5438 ranges in unicode/tables.go 4110 of them have stride 1. Stride 1 case got significantly faster. Other stride is a bit slower. Measured by import ( "testing" "unicode" ) func BenchmarkDiv1(b *testing.B) { rtb := &unicode.RangeTable{ R16: []unicode.Range16{ {0xa800, 0xdfff, 1}, // or 3 }, } for i := 0; i < b.N; i++ { unicode.Is(rtb, rune(0xc700)) } } Div1-6 15.6ns ± 1% 9.9ns ± 1% -36.54% (p=0.000 n=10+10) Div3-6 15.5ns ± 1% 16.1ns ± 1% +3.67% (p=0.000 n=10+10) Helps a bit with xml parsing from issue #21823 XMLsax-6 30.9s ± 0% 29.6s ± 0% -4.15% (p=0.000 n=10+9) Change-Id: Ibac1a91d7b9474d0c134b0add83e56caa62daa20 Reviewed-on: https://go-review.googlesource.com/63390 Run-TryBot: Ilya Tocar <ilya.tocar@intel.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Ilya Tocar authored
This has same readability and allows to inline FullRune for massive performance gain: FullASCIIRune-6 4.36ns ± 0% 1.25ns ± 0% -71.33% (p=0.000 n=8+10) FullJapaneseRune-6 4.70ns ± 0% 1.42ns ± 1% -69.68% (p=0.000 n=9+10) Change-Id: I95edd6292417a28aac244e40afb713596a087d93 Reviewed-on: https://go-review.googlesource.com/63332 Run-TryBot: Ilya Tocar <ilya.tocar@intel.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
-
Daniel Martí authored
This label was added automatically by grind to remove gotos. As of today, it's completely useless, as none of its uses need a label to begin with. While at it, remove all the redundant breaks too. Leave those that are the single statement in a case clause body, as that's the style used throughout std and cmd to clarify when cases are empty. Change-Id: I3e20068b66b759614e903beab1cc9b2709b31063 Reviewed-on: https://go-review.googlesource.com/62950 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
tbunyk authored
Make arguments semantics clear without the need to look for json.Indent documentation. Change-Id: If9adfe9f477a30d426ae83790b0f2578c0a809b7 Reviewed-on: https://go-review.googlesource.com/61670 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Ilya Tocar authored
Use constants directly, instead of loading address to e. g. AX and using (AX). Shouldn't affect performance, but makes code a bit nicer. Change-Id: Ifa138e54d3d2b2f4ad71e4ef4b9368ea79eb30f4 Reviewed-on: https://go-review.googlesource.com/62010Reviewed-by: Adam Langley <agl@golang.org>
-
Tobias Klauser authored
Unify colons (outside of <strong></strong>) and add a missing space in the list of groups of diagnostics solutions. Change-Id: Icbcd94427d4905dd88c4ea82aaa5dbf064c00990 Reviewed-on: https://go-review.googlesource.com/63111Reviewed-by: JBD <jbd@google.com>
-
Aliaksandr Valialkin authored
Write the moving timer only once, since it is overwritten by swapped timers on all the iterations except the last one. Additionally, explicitly pass timers heap into siftupTimer and siftdownTimer in order to make the code more clear. Relevant benchmark results on linux/amd64: Stop 700µs ± 7% 608µs ± 1% -13.13% (p=0.000 n=10+10) Stop-2 440µs ± 4% 376µs ± 4% -14.48% (p=0.000 n=10+10) Stop-4 339µs ± 2% 330µs ± 3% -2.66% (p=0.015 n=10+10) SimultaneousAfterFunc 702µs ± 9% 709µs ± 1% ~ (p=0.436 n=9+9) SimultaneousAfterFunc-2 573µs ± 2% 546µs ± 2% -4.71% (p=0.000 n=10+10) SimultaneousAfterFunc-4 387µs ± 1% 368µs ± 1% -4.89% (p=0.000 n=8+10) StartStop 268µs ± 0% 270µs ± 0% +0.91% (p=0.000 n=9+9) StartStop-2 155µs ± 6% 145µs ± 6% -6.70% (p=0.000 n=10+10) StartStop-4 125µs ± 1% 124µs ± 1% ~ (p=0.065 n=10+9) Change-Id: I3685835b5e3e82844e2e5e73ee03a1e22100bf0e Reviewed-on: https://go-review.googlesource.com/63110Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Michael Matloob authored
After the number of lost extra events are written to the the cpuprof log, the number of lost extra events should be set to zero, or else, the next time time addExtra is logged, lostExtra will be overcounted. This change resets lostExtra after its value is written to the log. Fixes #21836 Change-Id: I8a6ac9c61e579e7a5ca7bdb0f3463f8ae8b9f863 Reviewed-on: https://go-review.googlesource.com/63270Reviewed-by: Austin Clements <austin@google.com> Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-