- 04 Oct, 2016 2 commits
-
-
Mikio Hara authored
Fixes #7177. Change-Id: Iba6063905f4f9c6acef8aba76b55d996f186d835 Reviewed-on: https://go-review.googlesource.com/29892Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
-
Mikio Hara authored
golang.org/x/net/lif becomes vendor/golang_org/x/net/lif. At git rev 9f0e377 (golang.org/cl/29893) Updates #7177. Change-Id: Id838fcc234e71f735bb2609073f4c2214b48a970 Reviewed-on: https://go-review.googlesource.com/29891Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
- 03 Oct, 2016 16 commits
-
-
Mikio Hara authored
This change switches the use of socket implementation from the conventional SUS-based one to the latest POSIX-based one to make socket control message work correctly on Solaris. It looks like those two implementations, Socket over TLI/XTI and Socket, have different semantics in details but it wouldn't hurt the existing applications because the exposed syscall API doesn't support socket properties related to such a protocol independent application framework. Fixes #7402. Change-Id: I45a4e782d606bfbebe1404086c50a8c69af53461 Reviewed-on: https://go-review.googlesource.com/30171Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Michael Munday authored
Reversed, indexed and multi-register stores/loads cannot accept SB inputs. Therefore if one of these Ops is an input to a rule any pointer that is an argument to that Op cannot be OpSB. Change-Id: Ib8048362d1c6277122afec0d13a1c905290d69cb Reviewed-on: https://go-review.googlesource.com/30131 Run-TryBot: Michael Munday <munday@ca.ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
Austin Clements authored
Change-Id: I422708d50c3c727246e7991039877660ca034dc9 Reviewed-on: https://go-review.googlesource.com/30144 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
-
Austin Clements authored
In particular, it wasn't obvious that some values are special (unless you also found those special values), so document that it isn't necessarily a hash value. Change-Id: Iff292822b44408239e26cd882dc07be6df2c1d38 Reviewed-on: https://go-review.googlesource.com/30143 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Austin Clements authored
gcDumpObject is often used on a stack pointer (for example, when checkmark finds an unmarked object on the stack), but since stack spans don't have an elemsize, it doesn't print any of the memory from the frame. Make it at least slightly more useful by printing everything between obj and obj+off (inclusive). While we're here, also print out the span state. Change-Id: I51be064ea8791b4a365865bfdc7afa7b5aaecfbd Reviewed-on: https://go-review.googlesource.com/30142 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
-
Austin Clements authored
Currently span states are untyped constants and the field is just a uint8. Make this more type-safe by introducing a type for the span state. Change-Id: I369bf59fe6e8234475f4921611424fceb7d0a6de Reviewed-on: https://go-review.googlesource.com/30141 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
-
Keith Randall authored
Should be more asymptotically happy. We process each variable in turn to find all the locations where it needs a phi (the dominance frontier of all of its definitions). Then we add all those phis. This takes O(n * #variables), although hopefully much less. Then we do a single tree walk to match all the FwdRefs with the nearest definition or phi. This takes O(n) time. The one remaining inefficiency is that we might end up introducing a bunch of dead phis in the first step. A TODO is to introduce phis only where they might be used by a read. The old algorithm is still faster on small functions, so there's a cutover size (currently 500 blocks). This algorithm supercedes the David's sparse phi placement algorithm for large functions. Lowers compile time of example from #14934 from ~10 sec to ~4 sec. Lowers compile time of example from #16361 from ~4.5 sec to ~3 sec. Lowers #16407 from ~20 min to ~30 sec. Update #14934 Update #16361 Fixes #16407 Change-Id: I1cff6364e1623c143190b6a924d7599e309db58f Reviewed-on: https://go-review.googlesource.com/30163Reviewed-by: David Chase <drchase@google.com>
-
Cherry Zhang authored
Updates #17330. Change-Id: I83fe80139a2213f3169db884b84a4c3bd15b58b6 Reviewed-on: https://go-review.googlesource.com/30140 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
Ian Lance Taylor authored
Change-Id: I592b87f49fc636b89807d911132f69257d718afd Reviewed-on: https://go-review.googlesource.com/30168Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Billy Lynch authored
Allows users to override the default secure protocol list by setting the GIT_ALLOW_PROTOCOL environment variable. Addresses #17299 for vcs.go. Change-Id: If575861d2b1b04b59029fed7e5d12b49690af50a Reviewed-on: https://go-review.googlesource.com/30135Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Boris Nagaev authored
Allow overriding default name of `pkg-config` tool via environment variable PKG_CONFIG (same as used by autoconf pkg.m4 macros). This facilitates easy cross-compilation of cgo code. Original patch against Go <= 1.4 was written by xnox_canonical <dimitri.ledkov@canonical.com> in 2014. Source: https://codereview.appspot.com/104960043/ Fixes #16253 Change-Id: I31c33ffc3ecbff65da31421e6188d092ab4fe7e4 Reviewed-on: https://go-review.googlesource.com/29991Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Than McIntosh authored
Update gc liveness to remove special conservative treatment of ambiguously live vars, since there is no longer a need to protect against GCDEBUG=gcdead. Change-Id: Id6e2d03218f7d67911e8436d283005a124e6957f Reviewed-on: https://go-review.googlesource.com/24896Reviewed-by: David Chase <drchase@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org>
-
Brad Fitzpatrick authored
All implementations have always implemented this behavior, it's tested, and it's depended on by other packages. (notably, by net/http) The one exception is Plan 9 which doesn't support I/O deadlines at all (tracked in #11932). As a result, a bunch of tests fail on plan9 (#7237). But once Plan 9 adds I/O deadline support, it'll also need this behavior. Change-Id: Idb71767f0c99279c66dce29f7bdc78ef467e47aa Reviewed-on: https://go-review.googlesource.com/30164Reviewed-by: Sam Whited <sam@samwhited.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Austin Clements authored
Currently the SetFinalizer documentation makes a strong claim that SetFinalizer will panic if the pointer is not to an object allocated by calling new, to a composite literal, or to a local variable. This is not true. For example, it doesn't panic when passed the address of a package-level variable. Nor can we practically make it true. For example, we can't distinguish between passing a pointer to a composite literal and passing a pointer to its first field. Hence, weaken the guarantee to say that it "may" panic. Updates #17311. (Might fix it, depending on what we want to do with package-level variables.) Change-Id: I1c68ea9d0a5bbd3dd1b7ce329d92b0f05e2e0877 Reviewed-on: https://go-review.googlesource.com/30137Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
Add helpers for sorting slices. Slice sorts slices: sort.Slice(s, func(i, j int) bool { if s[i].Foo != s[j].Foo { return s[i].Foo < s[j].Foo } return s[i].Bar < s[j].Bar }) SliceStable is the same, but does a stable sort. SliceIsSorted reports whether a slice is already sorted. Fixes #16721 Change-Id: I346530af1c5dee148ea9be85946fe08f23ae53e7 Reviewed-on: https://go-review.googlesource.com/27321 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Florian Uekermann authored
This adds Uint64 methods to Rand and rngSource. Rand.Uint64 uses Source.Uint64 directly if it is present. rngSource.Uint64 provides access to all 64 bits generated by the underlying ALFG. To ensure high seed quality a 64th bit has been added to all elements of the array of "cooked" random numbers that are used for seeding. gen_cooked.go generates both the 63 bit and 64 bit array. Fixes #4254 Change-Id: I22855618ac69abae3d2799b3e7e59996d4c5a4b1 Reviewed-on: https://go-review.googlesource.com/27253 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
- 02 Oct, 2016 4 commits
-
-
Adam Langley authored
The code comment mixed up max and min. In this case, min is correct because this entropy is only used to make the signature scheme probabilistic. (I.e. if it were fixed then the scheme would still be secure except that key.Sign(foo) would always give the same result for a fixed key and foo.) For this purpose, 256-bits is plenty. Fixes #16819. Change-Id: I309bb312b775cf0c4b7463c980ba4b19ad412c36 Reviewed-on: https://go-review.googlesource.com/30153 Run-TryBot: Adam Langley <agl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Adam Langley authored
Currently, if a certificate contains no names (that we parsed), verification will return the confusing error: x509: certificate is valid for , not example.com. This change improves the error for that situation. Fixes #16834. Change-Id: I2ed9ed08298d7d50df758e503bdb55277449bf55 Reviewed-on: https://go-review.googlesource.com/30152Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Adam Langley <agl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Adam Langley authored
This change brings the behaviour of X.509 name constraints into line with NSS[1]. In this area, the behavior specified by the RFC and by NIST differs and this code follows the NIST behaviour. [1] https://github.com/servo/nss/blob/master/lib/certdb/genname.c Fixes #16347, fixes #14833. Change-Id: I5acd1970041291c2e3936f5b1fd36f2a0338e613 Reviewed-on: https://go-review.googlesource.com/30155Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Emmanuel Odeke authored
Fixes #4215. Fixes #6750. Improves the error message for wrong number of arguments by comparing the signature of the return call site arguments, versus the function's expected return arguments. In this CL, the signature representation of: + ideal numbers(TIDEAL) ie float*, complex*, rune, int is "number" instead of "untyped number". + idealstring is "string" instead of "untyped string". + idealbool is "bool" instead of "untyped bool". However, the representation of other types remains as the compiler would produce. * Example 1(in the error messages, if all lines were printed): $ cat main.go && go run main.go package main func foo() (int, int) { return 2.3 } func foo2() { return int(2), 2 } func foo3(v int) (a, b, c, d int) { if v >= 5 { return 1 } return 2, 3 } func foo4(name string) (string, int) { switch name { case "cow": return "moo" case "dog": return "dog", 10, true case "fish": return "" default: return "lizard", 10 } } type S int type T string type U float64 func foo5() (S, T, U) { if false { return "" } else { ptr := new(T) return ptr } return new(S), 12.34, 1 + 0i, 'r', true } func foo6() (T, string) { return "T" } ./issue4215.go:4: not enough arguments to return, got (number) want (int, int) ./issue4215.go:8: too many arguments to return, got (int, number) want () ./issue4215.go:13: not enough arguments to return, got (number) want (int, int, int, int) ./issue4215.go:15: not enough arguments to return, got (number, number) want (int, int, int, int) ./issue4215.go:21: not enough arguments to return, got (string) want (string, int) ./issue4215.go:23: too many arguments to return, got (string, number, bool) want (string, int) ./issue4215.go:25: not enough arguments to return, got (string) want (string, int) ./issue4215.go:37: not enough arguments to return, got (string) want (S, T, U) ./issue4215.go:40: not enough arguments to return, got (*T) want (S, T, U) ./issue4215.go:42: too many arguments to return, got (*S, number, number, number, bool) want (S, T, U) ./issue4215.go:46: not enough arguments to return, got (string) want (T, string) ./issue4215.go:46: too many errors * Example 2: $ cat 6750.go && go run 6750.go package main import "fmt" func printmany(nums ...int) { for i, n := range nums { fmt.Printf("%d: %d\n", i, n) } fmt.Printf("\n") } func main() { printmany(1, 2, 3) printmany([]int{1, 2, 3}...) printmany(1, "abc", []int{2, 3}...) } ./issue6750.go:15: too many arguments in call to printmany, got (number, string, []int) want (...int) Change-Id: I6fdce78553ae81770840070e2c975d3e3c83d5d8 Reviewed-on: https://go-review.googlesource.com/25156 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
- 01 Oct, 2016 7 commits
-
-
Adam Langley authored
Since there's no aspect of key logging that OpenSSL can check for us, the tests for it might as well just connect to another goroutine as this is lower-maintainance. Change-Id: I746d1dbad1b4bbfc8ef6ccf136ee4824dbda021e Reviewed-on: https://go-review.googlesource.com/30089 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Joonas Kuorilehto <joneskoo@derbian.fi> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Emmanuel Odeke authored
Panic if Repeat is given a negative count or if the value of (len(*) * count) is detected to overflow. We panic because we cannot change the signature of Repeat to return an error. Fixes #16237 Change-Id: I9f5ba031a5b8533db0582d7a672ffb715143f3fb Reviewed-on: https://go-review.googlesource.com/29954 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Matt Layher authored
Fixes #17232 Change-Id: I34df86f79b643dce9f054c6df6782e6037c06910 Reviewed-on: https://go-review.googlesource.com/30158 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Mikio Hara authored
At least it works well on DragonFly BSD 4.6. Change-Id: I3b210745246c6d8d42e32ba65ee3b9a17d171ff7 Reviewed-on: https://go-review.googlesource.com/30170 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
Also, update bundled http2 to x/net git rev 0d8126f to include https://golang.org/cl/30150, the HTTP/2 version of this fix. Fixes #16002 Change-Id: I8da1ca98250357aec012e3e85c8b13acfa2f3fec Reviewed-on: https://go-review.googlesource.com/30151 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Mike Appleby authored
In FreeBSD 10.0, the _umtx_op syscall was changed to allow sleeping on any supported clock, but the default clock was switched from a monotonic clock to CLOCK_REALTIME. Prior to 10.0, the __umtx_op_wait* functions ignored the fourth argument to _umtx_op (uaddr1), expected the fifth argument (uaddr2) to be a struct timespec pointer, and used a monotonic clock (nanouptime(9)) for timeout calculations. Since 10.0, if callers want a clock other than CLOCK_REALTIME, they must call _umtx_op with uaddr1 set to a value greater than sizeof(struct timespec), and with uaddr2 as pointer to a struct _umtx_time, rather than a timespec. Callers can set the _clockid field of the struct _umtx_time to request the clock they want. The relevant FreeBSD commit: https://svnweb.freebsd.org/base?view=revision&revision=232144 Fixes #17168 Change-Id: I3dd7b32b683622b8d7b4a6a8f9eb56401bed6bdf Reviewed-on: https://go-review.googlesource.com/30154Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Mike Appleby authored
Update cross-reference in the comment for runtimeTimer to point to the new go file instead of the old .h file. Change-Id: Iddb3614c41e1989096d6caf77d6c0d5781005181 Reviewed-on: https://go-review.googlesource.com/30157Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
- 30 Sep, 2016 11 commits
-
-
Joe Tsai authored
In golang.org/cl/22354, we added functionality to group functions under the type that they construct to. In this CL, we extend the same concept to constants and variables. This makes the doc tool more consistent with what the godoc website does. $ go doc reflect | egrep "ChanDir|Kind|SelectDir" <<< // Before: const RecvDir ChanDir = 1 << iota ... const Invalid Kind = iota ... type ChanDir int type Kind uint type SelectDir int func ChanOf(dir ChanDir, t Type) Type // After: type ChanDir int const RecvDir ChanDir = 1 << iota ... type Kind uint const Invalid Kind = iota ... type SelectDir int const SelectSend SelectDir ... func ChanOf(dir ChanDir, t Type) Type > > Furthermore, a fix was made to ensure that the type was printed in constant > blocks when the iota was applied on an unexported field. > > $ go doc reflect SelectSend > <<< > // Before: > const ( > SelectSend // case Chan <- Send > SelectRecv // case <-Chan: > SelectDefault // default > ) > > // After: > const ( > SelectSend SelectDir // case Chan <- Send > SelectRecv // case <-Chan: > SelectDefault // default > ) Fixes #16569 Change-Id: I26124c3d19e50caf9742bb936803a665e0fa6512 Reviewed-on: https://go-review.googlesource.com/25419Reviewed-by: Rob Pike <r@golang.org> Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Matt Layher authored
Fixes #17302 Change-Id: I375d5d4f2714ff415542f4fe56a548e53c5e8ba6 Reviewed-on: https://go-review.googlesource.com/30134Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Brad Fitzpatrick authored
Swapper returns a func that swaps two elements in a slice. Updates #16721 Change-Id: I7f2287a675c10a05019e02b7d62fb870af31216f Reviewed-on: https://go-review.googlesource.com/30088 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Brad Fitzpatrick authored
Code movement only, to look more like the equivalent http2 code, and to make an upcoming fix look more obvious. Updates #16002 (to be fixed once this code is in) Change-Id: Iaa4f965be14e98f9996e7c4624afe6e19bed1a80 Reviewed-on: https://go-review.googlesource.com/30087 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
-
David Benjamin authored
readRecord was not returning early if c.in.decrypt failed and ran through the rest of the function. It does set c.in.err, so the various checks in the callers do ultimately notice before acting on the result, but we should avoid running the rest of the function at all. Also rename 'err' to 'alertValue' since it isn't actually an error. Change-Id: I6660924716a85af704bd3fe81521b34766238695 Reviewed-on: https://go-review.googlesource.com/24709 Run-TryBot: Adam Langley <agl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
-
Alberto Donizetti authored
CL 20909 gave Mpint methods nice go-like names, but it didn't update the names in the error strings. Fix them. Same for a couple of Mpflt methods. Change-Id: I9c99653d4b922e32fd5ba18aba768a589a4c7869 Reviewed-on: https://go-review.googlesource.com/30091Reviewed-by: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Michael Munday authored
This commit makes the process of load/store merging more incremental for both big and little endian operations. It also adds support for 32-bit shifts (needed to merge 16- and 32-bit loads/stores). In addition, the merging of little endian stores is now supported. Little endian stores are now up to 30 times faster. Change-Id: Iefdd81eda4a65b335f23c3ff222146540083ad9c Reviewed-on: https://go-review.googlesource.com/29956 Run-TryBot: Michael Munday <munday@ca.ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
Alberto Donizetti authored
Convconst is not used in the new backend, and all its callers were deleted in CL 29168 (cmd/compile: delete lots of the legacy backend). iconv was an helper function for Convconst. Updates #16357 Change-Id: I65c7345586d7af81cdc2fb09c68f744ffb161a17 Reviewed-on: https://go-review.googlesource.com/30090Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Brad Fitzpatrick authored
Updates bundled http2 to x/net git rev a333c53 for: http2: add Transport support for IdleConnTimeout https://golang.org/cl/30075 And add tests. The bundled http2 also includes a change adding a Ping method to http2.ClientConn, but that type isn't exposed in the standard library. Nevertheless, the code gets compiled and adds a dependency on "crypto/rand", requiring an update to go/build's dependency test. Because net/http already depends on crypto/tls, which uses crypto/rand, it's not really a new dependency. Fixes #16808 Change-Id: I1ec8666ea74762f27c70a6f30a366a6647f923f7 Reviewed-on: https://go-review.googlesource.com/30078 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
David Crawshaw authored
The endcgo function call is currently deferred in case a cgo callback into Go panics and unwinds through cgocall. Typical cgo calls do not have callbacks into Go, and even fewer panic, so we pay the cost of this defer for no typical benefit. Amazingly, there is another defer on the cgocallback path also used to cleanup in case the Go code called by cgo panics. This CL folds the first defer into the second, to reduce the cost of typical cgo calls. This reduces the overhead for a no-op cgo call significantly: name old time/op new time/op delta CgoNoop-8 93.5ns ± 0% 51.1ns ± 1% -45.34% (p=0.016 n=4+5) The total effect between Go 1.7 and 1.8 is even greater, as CL 29656 reduced the cost of defer recently. Hopefully a future Go release will drop the cost of defer to nothing, making this optimization unnecessary. But until then, this is nice. Change-Id: Id1a5648f687a87001d95bec6842e4054bd20ee4f Reviewed-on: https://go-review.googlesource.com/30080 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Matthew Dempsky authored
Consistently access function parameters using the FP pseudo-register instead of SP (e.g., x+0(FP) instead of x+4(SP) or x+8(SP), depending on register size). Two reasons: 1) doc/asm says the SP pseudo-register should use negative offsets in the range [-framesize, 0), and 2) cmd/vet only validates parameter offsets when indexed from the FP pseudo-register. No binary changes to the compiled object files for any of the affected package/OS/arch combinations. Change-Id: I0efc6079bc7519fcea588c114ec6a39b245d68b0 Reviewed-on: https://go-review.googlesource.com/30085Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-