- 10 Nov, 2018 6 commits
-
-
Josh Bleecher Snyder authored
Some of the Ops got re-ordered with OSLICEHEADER. Re-generate. Change-Id: I8ec3f5056537dd0b18cac2d4267453451ade2b00 Reviewed-on: https://go-review.googlesource.com/c/148824 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Martin Möhrmann <martisch@uos.de>
-
Josh Bleecher Snyder authored
n.Type and n.Left.Type are used heavily. Give them useful names. We generate the type word frequently. Make it a closure. (We don't want to generate it up front, since there are some code paths that don't need it, and generating it has side-effects.) Simplify and document the final call construction. Follow-up to address feedback on CL 147360. Change-Id: I251134a55cf80d8b1676280a345d150f2288c09a Reviewed-on: https://go-review.googlesource.com/c/147538 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Martin Möhrmann <moehrmann@google.com>
-
Richard Musiol authored
With this change, callbacks returned by syscall/js.NewCallback get executed synchronously. This is necessary for the APIs of many JavaScript libraries. A callback triggered during a call from Go to JavaScript gets executed on the same goroutine. A callback triggered by JavaScript's event loop gets executed on an extra goroutine. Fixes #26045 Fixes #27441 Change-Id: I591b9e85ab851cef0c746c18eba95fb02ea9e85b Reviewed-on: https://go-review.googlesource.com/c/142004Reviewed-by: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Martin Möhrmann authored
Create a new node for OSLICEHEADER nodes to ensure typechecks are applied. Add nil checks for OSLICEHEADER type and pointer parameters for better error messages when these are not set. Improve formatting of OSLICEHEADER nodes in compiler error messages. Change-Id: Idea8f41bb4beb636f0e1fc381ff8d79b1d44fbae Reviewed-on: https://go-review.googlesource.com/c/146997 Run-TryBot: Martin Möhrmann <moehrmann@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
Ian Lance Taylor authored
It can be used to set the Go language version used by the module. RELNOTES=yes Updates #28221 Change-Id: Ief0dd185c01195a17be20dff8627c80943c436e7 Reviewed-on: https://go-review.googlesource.com/c/147282 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
-
Ian Lance Taylor authored
When creating a go.mod file, add a go statement mentioning the current Go version. We can be reasonably confident that the current version is able to build the module. This is as described in the language transition proposal at https://golang.org/issue/28221. Updates #28221 Change-Id: I70a99b3a53f4b6c0288da07473c5a71bb28cd86f Reviewed-on: https://go-review.googlesource.com/c/147281 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
-
- 09 Nov, 2018 16 commits
-
-
Ainar Garipov authored
This issue was found by the new vet's nilness check. _defer was already checked against nil, so don't check it again. Change-Id: I78725eaec7234b262b3c941e06441ca57f82bdd9 Reviewed-on: https://go-review.googlesource.com/c/148917 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Alex Brainman authored
This reverts CL 145221 (commit 5c359736) Reason for revert: breaks the build occasionally. Updates #23171 Updates #25965 Change-Id: Ie1e3c76ab9bcd8d28b6118440b5f80c76f9b1852 Reviewed-on: https://go-review.googlesource.com/c/148957 Run-TryBot: Alex Brainman <alex.brainman@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Ian Lance Taylor authored
This works around what appears to be a bug in current clang (2018-11-09). Details are in the comment in the code. Change-Id: Ib4783b6c03d531c69ebc4cb0ac023bea5bee7d40 Reviewed-on: https://go-review.googlesource.com/c/148819Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Nikhil Benesch authored
cgocall could previously invoke the race detector on an M whose P had been retaken. The race detector would attempt to use the P-local state from this stale P, racing with the thread that was actually wired to that P. The result was memory corruption of ThreadSanitizer's internal data structures that presented as hard-to-understand assertion failures and segfaults. Reorder cgocall so that it always acquires a P before invoking the race detector, and add a test that stresses the interaction between cgo and the race detector to protect against future bugs of this kind. Fixes #27660. Change-Id: Ide93f96a23490314d6647547140e0a412a97f0d4 Reviewed-on: https://go-review.googlesource.com/c/148717 Run-TryBot: Dmitry Vyukov <dvyukov@google.com> Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
-
Michael Anthony Knyszek authored
This change fixes a bug wherein freeing a scavenged span that didn't coalesce with any neighboring spans would result in that span getting scavenged again. This case may actually be a common occurance because "freeing" span trimmings and newly-grown spans end up using the same codepath. On systems where madvise is relatively expensive, this can have a large performance impact. This change also cleans up some of this logic in freeSpanLocked since a number of factors made the coalescing code somewhat difficult to reason about with respect to scavenging. Notably, the way the needsScavenge boolean is handled could be better expressed and the inverted conditions (e.g. !after.released) can make things even more confusing. Fixes #28595. Change-Id: I75228dba70b6596b90853020b7c24fbe7ab937cf Reviewed-on: https://go-review.googlesource.com/c/147559 Run-TryBot: Michael Knyszek <mknyszek@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
-
Josh Bleecher Snyder authored
During walkexpr, we were assessing whether shifts were bounded. However, that information was dropped on the floor during SSA conversion. The SSA backend already finds all bounded shifts that walkexpr could have, and at negligible extra cost (0.02% in alloc, CPU undetectable). Change-Id: Ieda1af1a2a3ec99bfdc2b0b704c9b80ce8a34486 Reviewed-on: https://go-review.googlesource.com/c/148897 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Lynn Boger authored
This change makes use of the cc versions of the AND, OR, XOR instructions, omitting the need for a CMP instruction. In many test programs and in the go binary, this reduces the size of 20-30 functions by at least 1 instruction, many in runtime. Testcase added to test/codegen/comparisons.go Change-Id: I6cc1ca8b80b065d7390749c625bc9784b0039adb Reviewed-on: https://go-review.googlesource.com/c/143059Reviewed-by: Carlos Eduardo Seo <cseo@linux.vnet.ibm.com> Reviewed-by: Michael Munday <mike.munday@ibm.com> Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ryan Dahl authored
Change-Id: I393c53d6f7b526d156226502544725a4cb9fb118 GitHub-Last-Rev: 5d53406c70ebbbbedd7650b9f43c873ead63c184 GitHub-Pull-Request: golang/go#28693 Reviewed-on: https://go-review.googlesource.com/c/148818 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
This reverts CL 148758 (commit 5e17ce22) Reason for revert: breaks the build. Change-Id: I6ed15b7b8f6b74d84edab9402ddf7ae87a0d0387 Reviewed-on: https://go-review.googlesource.com/c/148817Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Daniel Martí <mvdan@mvdan.cc> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Alan Donovan authored
When main.main returns, the process exits, so there's no need to cancel contexts. This change was initially reviewed as https://go-review.googlesource.com/c/go/+/106915/4 but somehow I messed up and committed patchset 5, which was effectively empty. Change-Id: Ic4250eb6563af9bc734e429aafc7081ca7d0e012 Reviewed-on: https://go-review.googlesource.com/c/148758Reviewed-by: Alan Donovan <adonovan@google.com>
-
Josh Bleecher Snyder authored
This change introduces two optimizations together, one for recursive and one for non-recursive stacks. For recursive stacks, we introduce the new entry at the beginning of the cache, so it can be found first. This adds an extra read and write. While we're here, switch from fastrandn, which does a multiply, to fastrand % n, which does a shift. For non-recursive stacks, split the cache from [16]pcvalueCacheEnt into [2][8]pcvalueCacheEnt, and add a very cheap associative lookup. name old time/op new time/op delta StackCopyPtr-8 118ms ± 1% 106ms ± 2% -9.56% (p=0.000 n=17+18) StackCopy-8 95.8ms ± 1% 87.0ms ± 3% -9.11% (p=0.000 n=19+20) StackCopyNoCache-8 135ms ± 2% 139ms ± 1% +3.06% (p=0.000 n=19+18) During make.bash, the association function used has this return distribution: percent count return value 53.23% 678797 1 46.74% 596094 0 It is definitely not perfect, but it is pretty good, and that's all we need. Change-Id: I2cabb1d26b99c5111bc28f427016a2a5e6c620fd Reviewed-on: https://go-review.googlesource.com/c/110564 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
Lynn Boger authored
This handles a TODO in the md5block_ppc64le.s file to make use of byte reverse loads so the function works for big endian as well as little endian. File name is now md5block_ppc64x.s. name old time/op new time/op delta Hash8Bytes 537ns ± 0% 299ns ± 0% -44.32% (p=0.000 n=8+1) Hash1K 4.74µs ± 0% 3.24µs ± 0% -31.64% (p=0.250 n=7+1) Hash8K 34.4µs ± 0% 23.6µs ± 0% -31.56% (p=0.222 n=8+1) Hash8BytesUnaligned 537ns ± 0% 298ns ± 0% -44.51% (p=0.000 n=8+1) Hash1KUnaligned 4.74µs ± 0% 3.24µs ± 0% -31.48% (p=0.222 n=8+1) Hash8KUnaligned 34.4µs ± 0% 23.6µs ± 0% -31.39% (p=0.222 n=8+1) name old speed new speed delta Hash8Bytes 14.9MB/s ± 0% 26.8MB/s ± 0% +79.76% (p=0.222 n=8+1) Hash1K 216MB/s ± 0% 316MB/s ± 0% +46.29% (p=0.250 n=7+1) Hash8K 238MB/s ± 0% 348MB/s ± 0% +46.11% (p=0.222 n=8+1) Hash8BytesUnaligned 14.9MB/s ± 0% 26.8MB/s ± 0% +79.76% (p=0.222 n=8+1) Hash1KUnaligned 216MB/s ± 0% 316MB/s ± 0% +45.95% (p=0.222 n=8+1) Hash8KUnaligned 238MB/s ± 0% 347MB/s ± 0% +45.75% (p=0.222 n=8+1) Change-Id: I2e226bf7e69e0acd49db1af42e4fd8b87b155606 Reviewed-on: https://go-review.googlesource.com/c/144599 Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Carlos Eduardo Seo <cseo@linux.vnet.ibm.com> Reviewed-by: Michael Munday <mike.munday@ibm.com>
-
Daniel Martí authored
Pointers to compound objects (structs, slices, arrays, maps) are only followed by fmt if the pointer is at the top level of an argument. This is to minimise the chances of fmt running into loops. However, vet did not follow this rule. It likely doesn't help that fmt does not document that restriction well, which is being tracked in #28625. Updates #27672. Change-Id: Ie9bbd9b974eda5ab9a285986d207ef92fca4453e Reviewed-on: https://go-review.googlesource.com/c/147997 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com>
-
Daniel Martí authored
fmt's godoc reads: For compound objects, the elements are printed using these rules, recursively, laid out like this: struct: {field0 field1 ...} array, slice: [elem0 elem1 ...] maps: map[key1:value1 key2:value2 ...] pointer to above: &{}, &[], &map[] That is, a pointer to a struct, array, slice, or map, can be correctly printed by fmt if the type pointed to can be printed without issues. vet was only following this rule for pointers to structs, omitting arrays, slices, and maps. Fix that, and add tests for all the combinations. Updates #27672. Change-Id: Ie61ebe1fffc594184f7b24d7dbf72d7d5de78309 Reviewed-on: https://go-review.googlesource.com/c/147758 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alan Donovan <adonovan@google.com>
-
Brad Fitzpatrick authored
Fixes #28674 Change-Id: Id88e0a4b86b50eb45f0d968d7e4bbe66b7f37f82 Reviewed-on: https://go-review.googlesource.com/c/148579 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Brad Fitzpatrick authored
Change-Id: Ia0caf2fb06097ac184f78779334460900e8c0149 Reviewed-on: https://go-review.googlesource.com/c/148580Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
- 08 Nov, 2018 17 commits
-
-
Josh Bleecher Snyder authored
This optimization is not sound if A, B, or C might overlap with each other. Thanks to Michael Munday for pointing this out during the review of CL 143479. This reduces the number of times this optimization triggers during make.bash from 386 to 74. This is unfortunate, but I don't see an obvious way around it, short of souping up the disjointness analysis. name old object-bytes new object-bytes delta Template 507kB ± 0% 507kB ± 0% +0.13% (p=0.008 n=5+5) Unicode 225kB ± 0% 225kB ± 0% ~ (all equal) GoTypes 1.85MB ± 0% 1.85MB ± 0% +0.02% (p=0.008 n=5+5) Flate 328kB ± 0% 328kB ± 0% ~ (all equal) GoParser 402kB ± 0% 402kB ± 0% ~ (all equal) Reflect 1.41MB ± 0% 1.41MB ± 0% ~ (all equal) Tar 457kB ± 0% 458kB ± 0% +0.20% (p=0.008 n=5+5) XML 600kB ± 0% 601kB ± 0% +0.03% (p=0.008 n=5+5) Change-Id: Ida408cb627145ba9faf473a78606f050c2f3f51c Reviewed-on: https://go-review.googlesource.com/c/145208 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Munday <mike.munday@ibm.com>
-
Daniel Theophanes authored
This CL add support for converting a returned cursor (presented to this package as a driver.Rows) and scanning it into a *Rows. Fixes #28515 Change-Id: Id8191c568dc135af9e5e8555efcd01987708edcb Reviewed-on: https://go-review.googlesource.com/c/145738Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Keith Randall authored
Cleans things up quite a bit. There's still a few more, like runtime.cmpstring, which might also be worth fixing. Change-Id: Ide18dd621efc129cc686db223f47fa0b044b5580 Reviewed-on: https://go-review.googlesource.com/c/148578 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
Agniva De Sarker authored
Updates #28421 Change-Id: I3262c83669bc3cefd2cea6a612e3dc1d4318b2c2 Reviewed-on: https://go-review.googlesource.com/c/148339Reviewed-by: Rob Pike <r@golang.org>
-
Alan Donovan authored
The environment variable is no longer necessary as we now plan to transition to the new vet by replacing it in a single step, and we really don't want to add more environment variables. Fixes #28636 Change-Id: Ib85e5c0d61213b7b9f6a53d9376fec29525df971 Reviewed-on: https://go-review.googlesource.com/c/148497 Run-TryBot: Alan Donovan <adonovan@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
-
Agniva De Sarker authored
Fixes #28649 Change-Id: I9f6807ee3c3007f670dd509780805c7b255a2bda Reviewed-on: https://go-review.googlesource.com/c/148338Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Keith Randall authored
This is a simple tweak to allow a bit more mid-stack inlining. In cases like this: func f() { g() } We'd really like to inline f into its callers. It can't hurt. We implement this optimization by making calls a bit cheaper, enough to afford a single call in the function body, but not 2. The remaining budget allows for some argument modification, or perhaps a wrapping conditional: func f(x int) { g(x, 0) } func f(x int) { if x > 0 { g() } } Update #19348 Change-Id: Ifb1ea0dd1db216c3fd5c453c31c3355561fe406f Reviewed-on: https://go-review.googlesource.com/c/147361Reviewed-by: Austin Clements <austin@google.com> Reviewed-by: David Chase <drchase@google.com>
-
Keith Randall authored
Add unexported unlinkat, openat, and fstatat calls, so that the internal/syscall/unix package can use them. Change-Id: I1df81ecae6427211dd392ec68c9f020fe131a526 Reviewed-on: https://go-review.googlesource.com/c/148457Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
沈涛 authored
Change-Id: Ibdca4f7002585b00d7f69d710285a8e0f69c598a GitHub-Last-Rev: eb8f800c986c8ac4a81705158ecc730c35e1c5c2 GitHub-Pull-Request: golang/go#28659 Reviewed-on: https://go-review.googlesource.com/c/148477Reviewed-by: Russ Cox <rsc@golang.org>
-
Mikio Hara authored
Change-Id: I32e1829c955a48d8c4566430c13679e237bb0611 Reviewed-on: https://go-review.googlesource.com/c/148337 Run-TryBot: Mikio Hara <mikioh.public.networking@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Filippo Valsorda authored
Now, this is embarrassing. While preparing CL 142818, I noticed a possible vulnerability in the existing code which I was rewriting. I took a note to go back and assess if it was indeed an issue, and in case start the security release process. The note unintentionally slipped into the commit. Fortunately, there was no vulnerability. What caught my eye was that I had fixed the calculation of the minimum encrypted payload length from roundUp(explicitIVLen+macSize+1, blockSize) to (using the same variable names) explicitIVLen + roundUp(macSize+1, blockSize) The explicit nonce sits outside of the encrypted payload, so it should not be part of the value rounded up to the CBC block size. You can see that for some values of the above, the old result could be lower than the correct value. An unexpectedly short payload might cause a panic during decryption (a DoS vulnerability) or even more serious issues due to the constant time code that follows it (see for example Yet Another Padding Oracle in OpenSSL CBC Ciphersuites [1]). In practice, explicitIVLen is either zero or equal to blockSize, so it does not change the amount of rounding up necessary and the two formulations happen to be identical. Nothing to see here. It looked more suspicious than it is in part due to the fact that the explicitIVLen definition moved farther into hc.explicitNonceLen() and changed name from IV (which suggests a block length) to nonce (which doesn't necessarily). But anyway it was never meant to surface or be noted, except it slipped, so here we are for a boring explanation. [1] https://blog.cloudflare.com/yet-another-padding-oracle-in-openssl-cbc-ciphersuites/ Change-Id: I365560dfe006513200fa877551ce7afec9115fdf Reviewed-on: https://go-review.googlesource.com/c/147637Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Agniva De Sarker authored
Fixes #28421 Change-Id: I00878ec246d5249d910f2b57749f74cfc38dbec6 Reviewed-on: https://go-review.googlesource.com/c/148117Reviewed-by: Rob Pike <r@golang.org>
-
Keith Randall authored
Miscellaneous additional conversions from raw syscalls to using their libc equivalent. Update #17490 Change-Id: If9ab22cc1d676c1f20fb161ebf02b0c28f71585d Reviewed-on: https://go-review.googlesource.com/c/148257 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Ian Lance Taylor authored
Updates #28221 Change-Id: I8a1e352cd9122bce200d45c6b19955cb50308d71 Reviewed-on: https://go-review.googlesource.com/c/147280 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
-
Ian Lance Taylor authored
Change-Id: I8db276ec371de56871ce3250f27de1d1dee4b473 Reviewed-on: https://go-review.googlesource.com/c/147279 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
-
Ian Lance Taylor authored
Pass the Go language version specified in the go.mod file to cmd/compile. Also, change the behavior when the go.mod file requests a Go version that is later than the current one. Previously cmd/go would give a fatal error in this situation. With this change it attempts the compilation, and if (and only if) the compilation fails it adds a note saying that the requested Go version is newer than the known version. This is as described in https://golang.org/issue/28221. Updates #28221. Change-Id: I46803813e7872d4a418a3fd5299880be3b73a971 Reviewed-on: https://go-review.googlesource.com/c/147278 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
-
Ian Lance Taylor authored
This will be used by later commits in this sequence. Updates #28221 Change-Id: I2b22b9f88a0183636cde9509606f03f079eb33f1 Reviewed-on: https://go-review.googlesource.com/c/147277 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
-
- 07 Nov, 2018 1 commit
-
-
diplozoon authored
I added /v2 to go.mod require example Fixes #28374 Change-Id: I74cca374838d106eb79acb9189a02fe9443962c0 Reviewed-on: https://go-review.googlesource.com/c/144917Reviewed-by: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-