- 25 Aug, 2014 20 commits
-
-
Dmitriy Vyukov authored
A whole thread is too much for background scavenger that sleeps all the time anyway. We already have sysmon thread that can do this work. Also remove g->isbackground and simplify enter/exitsyscall. LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews, khr, rlh https://golang.org/cl/108640043
-
Dmitriy Vyukov authored
Explain why it's safe to allocate chans with flagNoScan. LGTM=rsc R=golang-codereviews CC=golang-codereviews, khr, rsc https://golang.org/cl/125510045
-
Dmitriy Vyukov authored
LGTM=rsc R=golang-codereviews, ruiu, rsc, daniel.morsing CC=golang-codereviews, khr https://golang.org/cl/123700044
-
Dmitriy Vyukov authored
LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews, khr https://golang.org/cl/126210046
-
Dmitriy Vyukov authored
LGTM=0intro R=0intro CC=golang-codereviews https://golang.org/cl/131190043
-
Dmitriy Vyukov authored
LGTM=dave R=golang-codereviews, dave CC=golang-codereviews, khr, rsc https://golang.org/cl/128700043
-
Russ Cox authored
Normally, an expression of the form x.f or *y can be reordered with function calls and communications. Select is stricter than normal: each channel expression is evaluated in source order. If you have case <-x.f and case <-foo(), then if the evaluation of x.f causes a panic, foo must not have been called. (This is in contrast to an expression like x.f + foo().) Enforce this stricter ordering. Fixes #8336. LGTM=dvyukov R=golang-codereviews, dvyukov CC=golang-codereviews, r https://golang.org/cl/126570043
-
Dmitriy Vyukov authored
Reduce duration of critical section, make pcbuf local to function. LGTM=rsc R=golang-codereviews CC=golang-codereviews, rsc https://golang.org/cl/102600043
-
Dmitriy Vyukov authored
Part of cl/128670043 that got lost during submit. TBR=rsc R=golang-codereviews CC=golang-codereviews https://golang.org/cl/129570043
-
Dmitriy Vyukov authored
And add a test. LGTM=rsc R=golang-codereviews CC=golang-codereviews, khr, rsc https://golang.org/cl/128670043
-
Dmitriy Vyukov authored
benchmark old ns/op new ns/op delta BenchmarkChanNonblocking 27.8 7.80 -71.94% BenchmarkChanNonblocking-2 79.1 3.94 -95.02% BenchmarkChanNonblocking-4 71.2 2.04 -97.13% LGTM=rsc R=golang-codereviews, rsc, dave CC=golang-codereviews https://golang.org/cl/110580043
-
Sanjay Menakuru authored
LGTM=dvyukov R=golang-codereviews, dvyukov CC=golang-codereviews, khr https://golang.org/cl/128680043
-
Alex Brainman authored
LGTM=khr R=khr, remyoudompheng CC=golang-codereviews https://golang.org/cl/132820043
-
Sanjay Menakuru authored
LGTM=khr R=golang-codereviews, khr CC=dvyukov, golang-codereviews https://golang.org/cl/131010044
-
Josh Bleecher Snyder authored
Update #8525 Some temporary variables that were fully registerized nevertheless had stack space allocated for them because the Addrs were still marked as having associated nodes. Distribution of stack space reserved for temporary variables while running make.bash (6g): BEFORE 40.89% 7026 allocauto: 0 to 0 7.83% 1346 allocauto: 0 to 24 7.22% 1241 allocauto: 0 to 8 6.30% 1082 allocauto: 0 to 16 4.96% 853 allocauto: 0 to 56 4.59% 789 allocauto: 0 to 32 2.97% 510 allocauto: 0 to 40 2.32% 399 allocauto: 0 to 48 2.10% 360 allocauto: 0 to 64 1.91% 328 allocauto: 0 to 72 AFTER 48.49% 8332 allocauto: 0 to 0 9.52% 1635 allocauto: 0 to 16 5.28% 908 allocauto: 0 to 48 4.80% 824 allocauto: 0 to 32 4.73% 812 allocauto: 0 to 8 3.38% 581 allocauto: 0 to 24 2.35% 404 allocauto: 0 to 40 2.32% 399 allocauto: 0 to 64 1.65% 284 allocauto: 0 to 56 1.34% 230 allocauto: 0 to 72 LGTM=rsc R=rsc CC=dave, dvyukov, golang-codereviews, minux https://golang.org/cl/126160043
-
Russ Cox authored
TBR=dfc CC=golang-codereviews https://golang.org/cl/126210047
-
Russ Cox authored
cmd/6g has been doing this for a long time. Arrays are still problematic on 5g because the addressing for t[0] where local var t has type [3]uintptr takes the address of t. That's issue 8125. Fixes #8123. LGTM=josharian R=josharian, dave CC=golang-codereviews https://golang.org/cl/102890046
-
Russ Cox authored
CL 130240043 did this but broke ARM, because it made newErrorCString start allocating, so we rolled it back in CL 133810043. CL 133820043 removed that allocation. Try again. Fixes #8405. LGTM=bradfitz, dave R=golang-codereviews, bradfitz CC=dave, golang-codereviews, r https://golang.org/cl/133830043
-
Matthew Dempsky authored
Fixes #8494. LGTM=rsc R=golang-codereviews, gobot, rsc, evankroske CC=golang-codereviews https://golang.org/cl/123040043
-
Russ Cox authored
Now 'go vet runtime' only shows: malloc.go:200: possible misuse of unsafe.Pointer malloc.go:214: possible misuse of unsafe.Pointer malloc.go:250: possible misuse of unsafe.Pointer stubs.go:167: possible misuse of unsafe.Pointer Those are all unavoidable. LGTM=josharian R=golang-codereviews, dvyukov, josharian CC=dave, golang-codereviews https://golang.org/cl/135730043
-
- 24 Aug, 2014 12 commits
-
-
Rob Pike authored
It now serves as an example for go generate as well as for yacc. NOTE: Depends on go generate, which is not yet checked in. This is a proof of concept of the approach. That is https://golang.org/cl/125580044. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/125620044
-
Rob Pike authored
First cut. Works well enough to support yacc via https://golang.org/cl/125620044. LGTM=alex.brainman, rsc R=rsc, alex.brainman CC=golang-codereviews https://golang.org/cl/125580044
-
Rob Pike authored
CC=golang-codereviews https://golang.org/cl/132890043
-
Russ Cox authored
TBR=dvyukov CC=golang-codereviews https://golang.org/cl/131150043
-
Dmitriy Vyukov authored
LGTM=rsc R=golang-codereviews, khr, rsc CC=golang-codereviews, rlh https://golang.org/cl/130340043
-
Keith Randall authored
LGTM=dvyukov R=dvyukov, khr CC=golang-codereviews https://golang.org/cl/127460044
-
Dmitriy Vyukov authored
This is based on the crash dump provided by Alan and on mental experiments: sweep 0 74 fatal error: gc: unswept span runtime stack: runtime.throw(0x9df60d) markroot(0xc208002000, 0x3) runtime.parfordo(0xc208002000) runtime.gchelper() I think that when we moved all stacks into heap, we introduced a bunch of bad data races. This was later worsened by parallel stack shrinking. Observation 1: exitsyscall can allocate a stack from heap at any time (including during STW). Observation 2: parallel stack shrinking can (surprisingly) grow heap during marking. Consider that we steadily grow stacks of a number of goroutines from 8K to 16K. And during GC they all can be shrunk back to 8K. Shrinking will allocate lots of 8K stacks, and we do not necessary have that many in heap at this moment. So shrinking can grow heap as well. Consequence: any access to mheap.allspans in GC (and otherwise) must take heap lock. This is not true in several places. Fix this by protecting accesses to mheap.allspans and introducing allspans cache for marking, similar to what we use for sweeping. LGTM=rsc R=golang-codereviews, rsc CC=adonovan, golang-codereviews, khr, rlh https://golang.org/cl/126510043
-
Dmitriy Vyukov authored
Cache unrolled GC bitmask for types up to 64/32K on 64/32-bit systems, this corresponds to up to 4K cached bitmask. Perf builders say that 2% of time is spent in unrollgcproginplace_m/unrollgcprog1 on http benchmark: http://goperfd.appspot.com/log/f42045f45bf61a0da53b724a7c8567824a0ad6c9 LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews, khr, rlh https://golang.org/cl/122680043
-
Dmitriy Vyukov authored
LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews, khr https://golang.org/cl/132090043
-
Dmitriy Vyukov authored
LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews, khr https://golang.org/cl/132100043
-
Russ Cox authored
The low-level implementation of divide on ARM assumes that it can panic with an error created by newErrorCString without allocating. If we make interface data words require pointer values, the current definition would require an allocation when stored in an interface. Changing the definition to use unsafe.Pointer instead of uintptr avoids the allocation. This change is okay because the field really is a pointer (to a C string in rodata). Update #8405. This should make CL 133830043 safe to try again. LGTM=bradfitz R=golang-codereviews, bradfitz CC=dave, golang-codereviews, r https://golang.org/cl/133820043
-
Dave Cheney authored
This change broke divmod.go on all arm platforms. ««« original CL description cmd/gc: change interface representation: only pointers in data word Note that there are various cleanups that can be made if we keep this change, but I do not want to start making changes that depend on this one until the 1.4 cycle closes. Fixes #8405. LGTM=r R=golang-codereviews, adg, r, bradfitz CC=golang-codereviews, iant https://golang.org/cl/130240043 »»» LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/133810043
-
- 23 Aug, 2014 4 commits
-
-
Dave Cheney authored
This is a very dumb translation to keep the code as close to the original C as possible. LGTM=rsc R=khr, minux, rsc, josharian CC=golang-codereviews https://golang.org/cl/126490043
-
Russ Cox authored
Note that there are various cleanups that can be made if we keep this change, but I do not want to start making changes that depend on this one until the 1.4 cycle closes. Fixes #8405. LGTM=r R=golang-codereviews, adg, r, bradfitz CC=golang-codereviews, iant https://golang.org/cl/130240043
-
Dmitriy Vyukov authored
LGTM=bradfitz R=daniel.morsing, bradfitz CC=golang-codereviews https://golang.org/cl/130500044
-
Daniel Morsing authored
This makes newproc invisible to the GC. This is a pretty simple change since parts of newproc already depends on being run on the M stack. LGTM=dvyukov R=golang-codereviews, dvyukov CC=golang-codereviews, khr https://golang.org/cl/129520043
-
- 22 Aug, 2014 4 commits
-
-
Dmitriy Vyukov authored
LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/126540043
-
Dmitriy Vyukov authored
Note is required for timers and heap scavenger. LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews, khr, rlh https://golang.org/cl/128620043
-
Dmitriy Vyukov authored
The current code is correct, but vet does not understand it: asm_amd64.s:963: [amd64] invalid MOVL of ret+0(FP); int64 is 8-byte value asm_amd64.s:964: [amd64] invalid offset ret+4(FP); expected ret+0(FP) LGTM=minux R=golang-codereviews, minux CC=golang-codereviews https://golang.org/cl/125200044
-
Dmitri Shuralyov authored
Fix issue by always appending newline after user input, before the closing curly bracket. The adjust func is modified to remove this new newline. Add test case (it fails before CL, passes after). Fixes #8411. LGTM=gri R=golang-codereviews, bradfitz, josharian, gri CC=golang-codereviews https://golang.org/cl/124700043
-