- 05 Dec, 2014 9 commits
-
-
Russ Cox authored
This is going to hurt a bit but we'll make it better later. Now the race detector can be run again. I added the write barrier optimizations from CL 183020043 to try to make it hurt a little less. TBR=rlh CC=golang-codereviews https://golang.org/cl/185070043
-
Russ Cox authored
-
Russ Cox authored
With this change, default now contains Go 1.5 work. Any future bug fixes for Go 1.4 in the compilers or the runtime will have to be made directly to the release branch.
-
Russ Cox authored
TBR=rlh CC=golang-codereviews https://golang.org/cl/181100044
-
Russ Cox authored
TBR=austin CC=golang-codereviews https://golang.org/cl/178700044
-
Austin Clements authored
When liblink sees something like JMP x ... x: JMP y it rewrites the first jump to jump directly to y. This is fine if y is a resolved label. However, it *also* does this if y is a function symbol, but fails to carry over the relocation that would later patch in that symbol's value. As a result, the original jump becomes either a self-jump (if relative) or a jump to PC 0 (if absolute). Fix this by disabling this optimization if the jump being patched in is a jump to a symbol. LGTM=minux R=rsc, minux CC=golang-codereviews https://golang.org/cl/185890044
-
Shenghou Ma authored
Frankly, I don't understand how the current code could possibly work except when every android program is using cgo. Discovered this while working on the iOS port. LGTM=crawshaw, rsc R=rsc, crawshaw CC=golang-codereviews https://golang.org/cl/177470043
-
Rob Pike authored
The new semantics of split require the newline be present. The test was stale. LGTM=adg R=golang-codereviews, adg CC=golang-codereviews https://golang.org/cl/182480043
-
Rob Pike authored
Scanner can't handle stupid long lines and there are reports of stupid long lines in production. Note the issue isn't long "//go:generate" lines, but any long line in any Go source file. To be fair, if you're going to have a stupid long line it's not a bad bet you'll want to run it through go generate, because it's some embeddable asset that has been machine generated. (One could ask why that generation process didn't add a newline or two, but we should cope anyway.) Rewrite the file scanner in "go generate" so it can handle arbitrarily long lines, and only stores in memory those lines that start "//go:generate". Also: Adjust the documentation to make clear that it does not parse the file. Fixes #9143. Fixes #9196. LGTM=rsc, dominik.honnef R=rsc, cespare, minux, dominik.honnef CC=golang-codereviews https://golang.org/cl/182970043
-
- 04 Dec, 2014 2 commits
-
-
Shenghou Ma authored
While we're at there, also add a message to prompt the user to install Graphviz if "dot" command is not found. Fixes #9178. LGTM=adg, alex.brainman, cookieo9, rsc R=rsc, adg, bradfitz, alex.brainman, cookieo9, smyrman CC=golang-codereviews https://golang.org/cl/180380043
-
Rob Pike authored
Fixes #9189. LGTM=dsymonds R=golang-codereviews, dsymonds CC=golang-codereviews https://golang.org/cl/178660043
-
- 03 Dec, 2014 2 commits
-
-
David Symonds authored
LGTM=r R=gri, r CC=golang-codereviews https://golang.org/cl/185830043
-
Russ Cox authored
Fixes #9199. LGTM=iant R=golang-codereviews, iant CC=austin, golang-codereviews, minux https://golang.org/cl/183080043
-
- 02 Dec, 2014 2 commits
-
-
Dominik Honnef authored
Move change from CL 170770043 to correct file and regenerate docs for changes from CL 164120043. LGTM=adg R=golang-codereviews, adg, bradfitz CC=golang-codereviews https://golang.org/cl/183000043
-
Andrew Gerrand authored
LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/178600043
-
- 01 Dec, 2014 2 commits
-
-
Russ Cox authored
During garbage collection, after scanning a stack, we think about shrinking it to reclaim some memory. The shrinking code (called while the world is stopped) checked that the status was Gwaiting or Grunnable and then changed the state to Gcopystack, to essentially lock the stack so that no other GC thread is scanning it. The same locking happens for stack growth (and is more necessary there). oldstatus = runtime·readgstatus(gp); oldstatus &= ~Gscan; if(oldstatus == Gwaiting || oldstatus == Grunnable) runtime·casgstatus(gp, oldstatus, Gcopystack); // oldstatus is Gwaiting or Grunnable else runtime·throw("copystack: bad status, not Gwaiting or Grunnable"); Unfortunately, "stop the world" doesn't stop everything. It stops all normal goroutine execution, but the network polling thread is still blocked in epoll and may wake up. If it does, and it chooses a goroutine to mark runnable, and that goroutine is the one whose stack is shrinking, then it can happen that between readgstatus and casgstatus, the status changes from Gwaiting to Grunnable. casgstatus assumes that if the status is not what is expected, it is a transient change (like from Gwaiting to Gscanwaiting and back, or like from Gwaiting to Gcopystack and back), and it loops until the status has been restored to the expected value. In this case, the status has changed semi-permanently from Gwaiting to Grunnable - it won't change again until the GC is done and the world can continue, but the GC is waiting for the status to change back. This wedges the program. To fix, call a special variant of casgstatus that accepts either Gwaiting or Grunnable as valid statuses. Without the fix bug with the extra check+throw in casgstatus, the program below dies in a few seconds (2-10) with GOMAXPROCS=8 on a 2012 Retina MacBook Pro. With the fix, it runs for minutes and minutes. package main import ( "io" "log" "net" "runtime" ) func main() { const N = 100 for i := 0; i < N; i++ { l, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { log.Fatal(err) } ch := make(chan net.Conn, 1) go func() { var err error c1, err := net.Dial("tcp", l.Addr().String()) if err != nil { log.Fatal(err) } ch <- c1 }() c2, err := l.Accept() if err != nil { log.Fatal(err) } c1 := <-ch l.Close() go netguy(c1, c2) go netguy(c2, c1) c1.Write(make([]byte, 100)) } for { runtime.GC() } } func netguy(r, w net.Conn) { buf := make([]byte, 100) for { bigstack(1000) _, err := io.ReadFull(r, buf) if err != nil { log.Fatal(err) } w.Write(buf) } } var g int func bigstack(n int) { var buf [100]byte if n > 0 { bigstack(n - 1) } g = int(buf[0]) + int(buf[99]) } Fixes #9186. LGTM=rlh R=austin, rlh CC=dvyukov, golang-codereviews, iant, khr, r https://golang.org/cl/179680043
-
Keith Randall authored
pointer, not one. Fixes #9179 LGTM=iant, rsc R=golang-codereviews, iant, rsc CC=golang-codereviews https://golang.org/cl/182160043
-
- 25 Nov, 2014 4 commits
-
-
Austin Clements authored
These accomplished the same thing, but R_CALLPOWER expected the whole instruction to be in the addend (and completely overwrote what was in the text section), while R_PPC64_REL24 overwrites only bits 6 through 24 of whatever was in the text section. Make R_CALLPOWER work like R_PPC64_REL24 to ease the implementation of dynamic linking. LGTM=rsc R=rsc CC=golang-codereviews, minux https://golang.org/cl/177430043
-
David du Colombier authored
warning: src/cmd/5g/reg.c:461 format mismatch d VLONG, arg 5 warning: src/cmd/6g/reg.c:396 format mismatch d VLONG, arg 5 warning: src/cmd/9g/reg.c:440 format mismatch d VLONG, arg 5 LGTM=minux R=rsc, minux CC=golang-codereviews https://golang.org/cl/179300043
-
Andrew Gerrand authored
LGTM=r R=r CC=golang-codereviews https://golang.org/cl/182750043
-
Russ Cox authored
We decided to build $GOOS.go always but forgot to test $GOOS_test.go. Fixes #9159. LGTM=r R=r CC=golang-codereviews https://golang.org/cl/176290043
-
- 24 Nov, 2014 4 commits
-
-
Russ Cox authored
TBR=austin CC=golang-codereviews https://golang.org/cl/179290043
-
Austin Clements authored
This was based on the 9c peephole optimizer, modified to work with code generated by gc and use the proginfo infrastructure in gc. LGTM=rsc R=rsc, bradfitz, minux CC=golang-codereviews https://golang.org/cl/179190043
-
Austin Clements authored
This adds some utilities for converting between the CC, V, and VCC variants of operations and uses these to derive the ProgInfo entries for these variants (which are identical to the ProgInfo for the base operations). The 9g peephole optimizer will also use these conversion utilities. LGTM=minux, rsc R=rsc, dave, minux CC=golang-codereviews https://golang.org/cl/180110044
-
Joel Sing authored
LGTM=rsc R=rsc, bradfitz CC=golang-codereviews https://golang.org/cl/178210043
-
- 23 Nov, 2014 1 commit
-
-
Russ Cox authored
TBR=austin CC=golang-codereviews https://golang.org/cl/177220044
-
- 22 Nov, 2014 4 commits
-
-
Russ Cox authored
Fixes #9127. LGTM=r R=bradfitz, r CC=golang-codereviews, nigeltao https://golang.org/cl/178120043
-
Shenghou Ma authored
Fixes #9149. LGTM=alex.brainman, rsc R=rsc, dave, alex.brainman CC=golang-codereviews https://golang.org/cl/176170043
-
Joel Sing authored
LGTM=minux R=rsc, minux CC=golang-codereviews https://golang.org/cl/177170043
-
Joel Sing authored
LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/169620043
-
- 21 Nov, 2014 10 commits
-
-
Shenghou Ma authored
I tested building Go itself, but not any of go.mobile tests. LGTM=crawshaw R=crawshaw, rsc CC=golang-codereviews https://golang.org/cl/179110043
-
Shenghou Ma authored
Otherwise both zgoos_linux.go and zgoos_android.go will be compiled for GOOS=android. LGTM=crawshaw, rsc R=rsc, crawshaw CC=golang-codereviews https://golang.org/cl/178110043
-
Rick Hudson authored
Ensure that all gs are in a scan state when their stacks are being scanned. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/179160044
-
Austin Clements authored
LGTM=rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/174530043
-
Austin Clements authored
LGTM=rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/176130044
-
Russ Cox authored
We don't know what we need yet, so add them all. Add them even on x86 architectures (as no-ops) so that the GC can refer to them unconditionally. Eventually we'll know what we want and probably have just one 'prefetch' with an appropriate meaning on each architecture. LGTM=rlh R=rlh CC=golang-codereviews https://golang.org/cl/179160043
-
David du Colombier authored
warning: src/liblink/list6.c:94 set and not used: s warning: src/liblink/list6.c:157 format mismatch ld VLONG, arg 3 warning: src/liblink/list6.c:157 format mismatch E UINT, arg 4 warning: src/liblink/list6.c:157 format mismatch d VLONG, arg 5 warning: src/liblink/list6.c:163 set and not used: s warning: src/liblink/list9.c:105 set and not used: s warning: src/liblink/list9.c:185 format mismatch ld VLONG, arg 3 warning: src/liblink/list9.c:185 format mismatch E UINT, arg 4 warning: src/liblink/list9.c:185 format mismatch d VLONG, arg 5 warning: src/liblink/list9.c:193 set and not used: s LGTM=rsc R=rsc CC=austin, golang-codereviews, minux https://golang.org/cl/176130043
-
David du Colombier authored
warning: /usr/go/src/cmd/8g/reg.c:365 format mismatch d VLONG, arg 5 LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/177160043
-
David du Colombier authored
Thanks to Aram Hăvărneanu, Nick Owens and Russ Cox for the early reviews. LGTM=aram, rsc R=rsc, lucio.dere, aram, ality CC=golang-codereviews, mischief https://golang.org/cl/175370043
-
Russ Cox authored
LGTM=dave R=minux, dave CC=golang-codereviews https://golang.org/cl/181030043
-