- 02 Jun, 2015 12 commits
-
-
Austin Clements authored
The stack barrier code will need a bookkeeping structure to keep track of the overwritten return PCs. This commit introduces and allocates this structure, but does not yet use the structure. We don't want to allocate space for this structure during garbage collection, so this commit allocates it along with the allocation of the corresponding stack. However, we can't do a regular allocation in newstack because mallocgc may itself grow the stack (which would lead to a recursive allocation). Hence, this commit makes the bookkeeping structure part of the stack allocation itself by stealing the necessary space from the top of the stack allocation. Since the size of this bookkeeping structure is logarithmic in the size of the stack, this has minimal impact on stack behavior. Change-Id: Ia14408be06aafa9ca4867f4e70bddb3fe0e96665 Reviewed-on: https://go-review.googlesource.com/10313Reviewed-by: Russ Cox <rsc@golang.org>
-
Austin Clements authored
Currently the runtime assumes that the allocation for the stack is exactly [stack.lo, stack.hi). We're about to steal a small part of this allocation for per-stack GC metadata. To prepare for this, this commit adds a field to the G for the allocated size of the stack. With this change, stack.lo and stack.hi continue to act as the true bounds on the stack, but are no longer also used as the bounds on the stack allocation. (I also tried this the other way around, where stack.lo and stack.hi remained the allocation bounds and I introduced a new top of stack. However, there are far more places that assume stack.hi is the true top of the stack than there are places that assume it's the top of the allocation.) Change-Id: Ifa9d956753be53d286d09cbc73d47fb34a18c0c6 Reviewed-on: https://go-review.googlesource.com/10312Reviewed-by: Russ Cox <rsc@golang.org>
-
Austin Clements authored
Currently signalstack takes a lower limit and a length and all calls hard-code the passed length. Change the API to take a *stack and compute the lower limit and length from the passed stack. This will make it easier for the runtime to steal some space from the top of the stack since it eliminates the hard-coded stack sizes. Change-Id: I7d2a9f45894b221f4e521628c2165530bbc57d53 Reviewed-on: https://go-review.googlesource.com/10311Reviewed-by: Rick Hudson <rlh@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Austin Clements authored
Currently we truncate gctrace clock and CPU times to millisecond precision. As a result, many phases are typically printed as 0, which is fine for user consumption, but makes gathering statistics and reports over GC traces difficult. In 1.4, the gctrace line printed times in microseconds. This was better for statistics, but not as easy for users to read or interpret, and it generally made the trace lines longer. This change strikes a balance between these extremes by printing milliseconds, but including the decimal part to two significant figures down to microsecond precision. This remains easy to read and interpret, but includes more precision when it's useful. For example, where the code currently prints, gc #29 @1.629s 0%: 0+2+0+12+0 ms clock, 0+2+0+0/12/0+0 ms cpu, 4->4->2 MB, 4 MB goal, 1 P this prints, gc #29 @1.629s 0%: 0.005+2.1+0+12+0.29 ms clock, 0.005+2.1+0+0/12/0+0.29 ms cpu, 4->4->2 MB, 4 MB goal, 1 P Fixes #10970. Change-Id: I249624779433927cd8b0947b986df9060c289075 Reviewed-on: https://go-review.googlesource.com/10554Reviewed-by: Russ Cox <rsc@golang.org>
-
Andrew Gerrand authored
The Error function is a potential XSS vector if a user can control the error message. For example, an http.FileServer when given a request for this path /<script>alert("xss!")</script> may return a response with a body like this open <script>alert("xss!")</script>: no such file or directory Browsers that sniff the content may interpret this as HTML and execute the script. The nosniff header added by this CL should help, but we should also try santizing the output entirely. Change-Id: I447f701531329a2fc8ffee2df2f8fa69d546f893 Reviewed-on: https://go-review.googlesource.com/10640Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Håvard Haugen authored
Allow room for the initial minus sign of negative integers when computing widths. Fixes #10945. Change-Id: I04d80203aaff64611992725d613ec13ed2ae721f Reviewed-on: https://go-review.googlesource.com/10393Reviewed-by: Rob Pike <r@golang.org>
-
Mikio Hara authored
This change fixes incorrect parsing of literal IP addresses in local database when the addresses contain IPv6 zone identifiers, are in dotted-decimal notation or in colon-hexadecimal notation with leading zeros. https://golang.org/cl/5851 already fixed the code path using getaddrinfo via cgo. This change fixes the remaining non-cgo code path. Fixes #8243. Fixes #8996. Change-Id: I48443611cbabed0d69667cc73911ba3de396fd44 Reviewed-on: https://go-review.googlesource.com/10306Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Mikio Hara authored
Fixes #11014. Change-Id: I9a18dacd10564d3eaa1fea4d77f1a48e08e79f53 Reviewed-on: https://go-review.googlesource.com/10563Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Robert Griesemer authored
Change-Id: I22fdba8ecaecf4e9201b845e65d982cac09f254a Reviewed-on: https://go-review.googlesource.com/10499Reviewed-by: Alan Donovan <adonovan@google.com>
-
Dave Cheney authored
Fixes an error where the compiler did not spot that the shadowed err value was set again after being read. That second assignment was lost as the value was redeclared in an inner scope. Spotted by Gordon Klass, https://groups.google.com/forum/#!topic/golang-nuts/MdDLbvOjb4o Change-Id: I28f2da6f98c52afcbb45e17d2b4f36c586598f98 Reviewed-on: https://go-review.googlesource.com/10600Reviewed-by: Mikio Hara <mikioh.mikioh@gmail.com>
-
Dave Cheney authored
Fix missing error check. Spotted by Gordon Klass, https://groups.google.com/forum/#!topic/golang-nuts/MdDLbvOjb4o Change-Id: I453a0cf032e0077d2622d5b85030310d159b9c4b Reviewed-on: https://go-review.googlesource.com/10606Reviewed-by: Nigel Tao <nigeltao@golang.org>
-
Dave Cheney authored
Fix missing error check in test. Spotted by Gordon Klass, https://groups.google.com/forum/#!topic/golang-nuts/MdDLbvOjb4o Change-Id: I22f1a438cbb60a2fe1740fc2d43fbf8aa008b6de Reviewed-on: https://go-review.googlesource.com/10605Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
- 01 Jun, 2015 8 commits
-
-
Alexandre Cesaro authored
The names of examples were wrong so they were not shown in the documentation. Change-Id: Ib1b985b44d2e056c38c008a591cb441e422c4717 Reviewed-on: https://go-review.googlesource.com/10404 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Didier Spezia authored
Executing a template involving variadic functions featuring a []interface{} slice (such as printf) could result in a panic in reflect.Value.Call, due to incorrect type checking. The following expressions failed (with a panic): {{true|printf}} {{1|printf}} {{1.1|printf}} {{'x'|printf}} {{1+2i|printf}} Implemented proper type checks for the fixed parameters of the variadic functions. Fixes #10946 Change-Id: Ia75333f651f73b3d2e024cb0c47cc30d90cb6852 Reviewed-on: https://go-review.googlesource.com/10403Reviewed-by: Rob Pike <r@golang.org>
-
Didier Spezia authored
The current escape code panics when an action involves chain nodes. Such nodes can be seen in the following situation: {{ . | AAA.B }} - AAA being a registered function The above expression is actually valid, because AAA could return a map containing a B key. The tests in text/template explicitly demonstrate this case. Fix allIdents to cover also chain nodes. While I was investigating this issue, I realized that the tests introduced in similar CL 9621 were incorrect. Parse errors were caught as expected, but for the wrong reason. Fixed them as well. No changes in text/template code itself. Fixes #10801 Change-Id: Ic9fe43b63669298ca52c3f499e2725dd2bb818a8 Reviewed-on: https://go-review.googlesource.com/10340Reviewed-by: Rob Pike <r@golang.org>
-
Rob Pike authored
In 1.6, go doc is more likely to be available. Change-Id: I970ad1d3317b35273f5c8d830f75713d3570c473 Reviewed-on: https://go-review.googlesource.com/10518Reviewed-by: Andrew Gerrand <adg@golang.org>
-
Konstantin Shaposhnikov authored
When go doc is invoked with a single package name argument (e.g. go doc pkgname) it needs to find the directory of the requested package sources in GOPATH. GOPATH might contain directories with the same name as the requested package that do no contain any *.go files. This change makes "go doc" ignore such directories when looking for possible package directories. This fixes #10882 Change-Id: Ib3d4ea69a25801c34cbe7b044de9870ba12f9aa8 Reviewed-on: https://go-review.googlesource.com/10190Reviewed-by: Rob Pike <r@golang.org>
-
Aamir Khan authored
t.init() should be called at the time of template creation i.e, template.New() and t.New() instead of later in the process. - Removed calls of t.init() from t.Parse(), t.Execute(), t.Funcs() - Also got rid of t.common != nil checks as it should never be nil Fixes #10879 Change-Id: I1b7ac812f02c841ae80037babce7e2b0a2df13e8 Reviewed-on: https://go-review.googlesource.com/10240Reviewed-by: Rob Pike <r@golang.org>
-
Rob Pike authored
This was a simple oversight: the algorithm to handle recursive types needed to be applied to the ignore-item case as well. Fixes #10415. Change-Id: I39ef31cad680ab8334e141f60d2f8707896785d1 Reviewed-on: https://go-review.googlesource.com/8942Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
-
Austin Clements authored
runtime.GC() is intentionally very weakly specified. However, it is so weakly specified that it's difficult to know that it's being used correctly for its one intended use case: to ensure garbage collection has run in a test that is garbage-sensitive. In particular, it is unclear whether it is synchronous or asynchronous. In the old STW collector this was essentially self-evident; short of queuing up a garbage collection to run later, it had to be synchronous. However, with the concurrent collector, there's evidence that people are inferring that it may be asynchronous (e.g., issue #10986), as this is both unclear in the documentation and possible in the implementation. In fact, runtime.GC() runs a fully synchronous STW collection. We probably don't want to commit to this exact behavior. But we can commit to the essential property that tests rely on: that runtime.GC() does not return until the GC has finished. Change-Id: Ifc3045a505e1898ecdbe32c1f7e80e2e9ffacb5b Reviewed-on: https://go-review.googlesource.com/10488Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
-
- 31 May, 2015 2 commits
-
-
Michael Käufl authored
Change-Id: Ic00882735d95d61f7c9d9f28d34cb4acce6a5546 Reviewed-on: https://go-review.googlesource.com/10556Reviewed-by: Minux Ma <minux@golang.org>
-
Adam Langley authored
As noted in bug #10980, an empty PEM block is encoded as -----BEGIN foo----- -----END foo----- However, Decode failed to process this. RFC 1421 doesn't answer what the encoding of the empty block should be because PEM messages always contain at least one header. However, PEM these days is just the encoding format – nobody uses the rest of PEM any longer. Having the empty block not contain a newline seems most correct because https://tools.ietf.org/html/rfc1421#section-9 clearly says that the optional “pemtext” carries the leading new-line with it. So if omitted, the new-line should be omitted too. None the less, this changes makes encoding/pem permissive, accepting any number of blank lines in an empty PEM block. Fixes #10980 Change-Id: If36bdfbf991ee281eccd50b56ddc95f24c6debb2 Reviewed-on: https://go-review.googlesource.com/10516Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Adam Langley <agl@golang.org>
-
- 30 May, 2015 3 commits
-
-
Dmitry Vyukov authored
I think it's worth mentioning. But the final decision is up to you. Change-Id: I3959132600ecc554988524ede73a7f6e8eac8353 Reviewed-on: https://go-review.googlesource.com/10551Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
-
Josh Bleecher Snyder authored
They're each architecture-specific. Let them share. Reduces Prog size to 288, which is the next smaller malloc class. Reduces inuse_space while compiling the rotate tests by ~3.2%. Change-Id: Ica8ec90e466c97b569745fffff0e5acd364e55fa Reviewed-on: https://go-review.googlesource.com/10514Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Josh Bleecher Snyder authored
That which cannot happen has not happened. No immediate changes to Addr or Prog size. Change-Id: I4cb9315f2c9f5f92eda340bfc4abb46395fa467f Reviewed-on: https://go-review.googlesource.com/10513Reviewed-by: Dave Cheney <dave@cheney.net> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
- 29 May, 2015 7 commits
-
-
Brad Fitzpatrick authored
Printed and Width were unused. Despite only removing two bytes, due to alignment, 8 bytes are saved on 64-bit: Before: unsafe.Sizeof(obj.Prog{}) == 304 After: unsafe.Sizeof(obj.Prog{}) == 296 The next size class below 320 (304=>19(320)) is 288. Still 8 bytes away from that. Change-Id: I8d1632dd40d387f7036c03c65ea4d64e9b6218c3 Reviewed-on: https://go-review.googlesource.com/10511 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
Brad Fitzpatrick authored
Change-Id: I55a7f455ebbd6b1bd6912aae82c0fcff6f43387c Reviewed-on: https://go-review.googlesource.com/10512 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Russ Cox authored
Missed in previous CL, causing build failures. Change-Id: I60aae5a3139aa009cb643d871d91b9d4c47dcbb8 Reviewed-on: https://go-review.googlesource.com/10538Reviewed-by: Russ Cox <rsc@golang.org>
-
Robert Griesemer authored
- (*Float).Scan conflicted with fmt.Scanner.Scan; it was also only used internally. Removed it, as well as the companion ScanFloat function. - (*Float).Parse (and thus ParseFloat) can now also parse infinities. As a result, more code could be simplified. - Fixed a bug in rounding (round may implicitly be called for infinite values). Found via existing test cases, after simplifying some code. - Added more test cases. Fixes issue #10938. Change-Id: I1df97821654f034965ba8b82b272e52e6dc427f1 Reviewed-on: https://go-review.googlesource.com/10498Reviewed-by: Alan Donovan <adonovan@google.com>
-
Robert Griesemer authored
This paves the way for a fmt-compatible (*Float).Format method. A better name then Text is still desirable (suggestions welcome). This is partly fixing issue #10938. Change-Id: I59c20a8cee11f5dba059fe0f38b414fe75f2ab13 Reviewed-on: https://go-review.googlesource.com/10493Reviewed-by: Alan Donovan <adonovan@google.com>
-
Russ Cox authored
It is almost never set and Addr is large, so having the full struct in the Prog wastes memory most of the time. Before (on a 64-bit system): $ sizeof -p cmd/internal/obj Addr Prog Addr 80 Prog 376 $ After: $ sizeof -p cmd/internal/obj Addr Prog Addr 80 Prog 304 $ Change-Id: I491f201241f87543964a7d0f48b85830759be9d0 Reviewed-on: https://go-review.googlesource.com/10457Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
David Symonds authored
Change-Id: Iddcd0cfb8f2c2f1c4ad7a94b50a9f65b543862c4 Reviewed-on: https://go-review.googlesource.com/10473Reviewed-by: Minux Ma <minux@golang.org>
-
- 28 May, 2015 8 commits
-
-
Håvard Haugen authored
Fixes #10968. Change-Id: I027bc571a71629ac49c2a0ff101b2950af6e7531 Reviewed-on: https://go-review.googlesource.com/10482Reviewed-by: David Symonds <dsymonds@golang.org> Run-TryBot: David Symonds <dsymonds@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Andrew Gerrand authored
Change-Id: I7aeb9fef3739c17c03fdaadbe00cd945ec9c0d72 Reviewed-on: https://go-review.googlesource.com/10492 Run-TryBot: Andrew Gerrand <adg@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Robert Griesemer authored
Fixes #10979. Change-Id: Iac25645ba8181a56a75ddfcd29ff6d64c15c4f57 Reviewed-on: https://go-review.googlesource.com/10466Reviewed-by: Alan Donovan <adonovan@google.com>
-
Josh Bleecher Snyder authored
Memory usage has been reduced. The tests are still slow, but that is issue #10571. /usr/bin/time shows significant variation in the peak memory usage compiling with tip. This is unsurprising, given GC. Using Go 1.4.2, memory is stable at 410mb. Using tip at d2ee09298, memory ranges from 470mb (+15%) to 534mb (+30%), with a mean of 504mb (+23%), with n=50. Fixes #9933. Change-Id: Id31f3ae086ec324abf70e8f1a8044c4a0c27e274 Reviewed-on: https://go-review.googlesource.com/10211Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
David Chase authored
Use pkgimport == nil (or not) to distinguish between parsing .go source files where "p" exponent specifier is not allowed and parsing .a or .o export data where it is. Use that to control error when p-exponent is seen. Fixes #9036 Change-Id: I8924f09c91d4945ef3f20e80a6e544008a94a7e4 Reviewed-on: https://go-review.googlesource.com/10450Reviewed-by: Russ Cox <rsc@golang.org>
-
Josh Bleecher Snyder authored
This is an automated follow-up to CL 10210. It was generated with a combination of eg and gofmt -r. No functional changes. Passes toolstash -cmp. Change-Id: I35f5897948a270b472d8cf80612071b4b29e9a2b Reviewed-on: https://go-review.googlesource.com/10253Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Austin Clements authored
TestGoroutineParallelism can deadlock if the GC runs during the test. Currently it tries to prevent this by forcing a GC before the test, but this is best effort and fails completely if GOGC is very low for testing. This change replaces this best-effort fix with simply setting GOGC to off for the duration of the test. Change-Id: I8229310833f241b149ebcd32845870c1cb14e9f8 Reviewed-on: https://go-review.googlesource.com/10454Reviewed-by: Russ Cox <rsc@golang.org>
-
Austin Clements authored
Currently when the race detector is enabled, orderexpr always creates a temporary for slice and append operations. This used to be necessary because the race detector had a different code path for slice assignment that required this temporary. Unfortunately, creating this temporary inhibits the optimization that eliminates write barriers when a slice is assigned only to change its length or cap. For most code, this is bad for performance, and in go:nowritebarrier functions in the runtime, this can mean the difference between compiling and not compiling. Now the race detector uses the regular slice assignment code, so creating this temporary is no longer necessary. Change-Id: I296042e1edc571b77c407f709c2ff9091c4aa795 Reviewed-on: https://go-review.googlesource.com/10456Reviewed-by: Russ Cox <rsc@golang.org>
-