1
0
mirror of https://github.com/golang/go synced 2024-11-23 15:40:06 -07:00
Commit Graph

20219 Commits

Author SHA1 Message Date
Brad Fitzpatrick
b9cd8f08c7 A+C: Alberto Donizetti (individual CLA)
Generated by a+c.

R=gobot
CC=golang-codereviews
https://golang.org/cl/125660043
2014-08-21 10:34:02 -07:00
Josh Bleecher Snyder
d27dfd2152 cmd/api: reduce stutter in runtime type stubs
LGTM=khr
R=khr
CC=dvyukov, golang-codereviews
https://golang.org/cl/132770044
2014-08-21 10:16:49 -07:00
Mark Theunissen
1a1d43239e net/http/httputil: Pass a Logger to ReverseProxy, allowing the user to control logging.
Fixes #8553.

LGTM=bradfitz
R=golang-codereviews, dave, bradfitz
CC=golang-codereviews
https://golang.org/cl/132750043
2014-08-21 10:16:34 -07:00
Brad Fitzpatrick
b2cc08b18d A+C: Mark Theunissen (individual CLA)
Generated by a+c.

R=gobot
CC=golang-codereviews
https://golang.org/cl/126500044
2014-08-21 10:15:19 -07:00
Dmitriy Vyukov
ae875e040c runtime: convert lfstack to Go
It is called from Go only in tests.

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, rlh, rsc
https://golang.org/cl/125610043
2014-08-21 21:10:45 +04:00
Dmitriy Vyukov
31e4ad5846 runtime: remove now arg from timer callback
Cleanup before converting to Go.
Fortunately nobody using it, because it is incorrect:
monotonic runtime time instead of claimed real time.

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, rsc
https://golang.org/cl/129480043
2014-08-21 21:10:30 +04:00
Dmitriy Vyukov
684de04118 runtime: convert common scheduler functions to Go
These are required for chans, semaphores, timers, etc.

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, rlh, rsc
https://golang.org/cl/123640043
2014-08-21 20:41:09 +04:00
Mikio Hara
6b112c24db net: fix typo
LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/128500043
2014-08-21 17:53:45 +09:00
Dmitriy Vyukov
1f5800673b cmd/gc: fix undefined behavior
UndefinedBehaviorSanitizer claims it is UB in C:
src/cmd/gc/racewalk.c:422:37: runtime error: member access within null pointer of type 'Node' (aka 'struct Node')
src/cmd/gc/racewalk.c:423:37: runtime error: member access within null pointer of type 'Node' (aka 'struct Node')

LGTM=rsc
R=dave, rsc
CC=golang-codereviews
https://golang.org/cl/125570043
2014-08-21 12:34:26 +04:00
Dmitriy Vyukov
99e9bac8c4 runtime: init GC later
Init GC later as it needs to read GOGC env var.
Fixes #8562.

LGTM=daniel.morsing, rsc
R=golang-codereviews, daniel.morsing, rsc
CC=golang-codereviews, khr, rlh
https://golang.org/cl/130990043
2014-08-21 11:55:05 +04:00
Dmitriy Vyukov
a0dbbeae67 runtime: fix deadlock when gctrace
Calling ReadMemStats which does stoptheworld on m0 holding locks
was not a good idea.
Stoptheworld holding locks is a recipe for deadlocks (added check for this).
Stoptheworld on g0 may or may not work (added check for this as well).
As far as I understand scavenger will print incorrect numbers now,
as stack usage is not subtracted from heap. But it's better than deadlocking.

LGTM=khr
R=golang-codereviews, rsc, khr
CC=golang-codereviews, rlh
https://golang.org/cl/124670043
2014-08-21 11:46:53 +04:00
Dmitriy Vyukov
e249b0ffee cmd/api: add missing runtime struct
Fixes build.

TBR=khr
R=golang-codereviews
CC=golang-codereviews, khr
https://golang.org/cl/130390044
2014-08-21 11:43:58 +04:00
Rémy Oudompheng
04487d5612 runtime: convert MemProfile, BlockProfile, ThreadCreateProfile to Go.
LGTM=khr
R=golang-codereviews, bradfitz, khr
CC=golang-codereviews
https://golang.org/cl/123680043
2014-08-21 08:07:42 +02:00
Josh Bleecher Snyder
cccd66c6c4 runtime: remove unused variable
LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/128230047
2014-08-20 14:36:28 -07:00
Josh Bleecher Snyder
68f91aea57 runtime: convert memclrBytes to Go
LGTM=khr
R=khr
CC=golang-codereviews
https://golang.org/cl/131980043
2014-08-20 14:02:11 -07:00
Dmitriy Vyukov
ddce7c35f4 runtime: add atomicor8 for amd64p32
LGTM=khr
R=golang-codereviews, daniel.morsing, khr, rsc
CC=golang-codereviews, khr, rlh
https://golang.org/cl/131950043
2014-08-20 12:58:01 +04:00
Alex Brainman
b95ed83480 syscall: replace zsyscall_windows_*.go files with a single file
zsyscall_windows_386.go and zsyscall_windows_amd64.go contain same bytes

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/124640043
2014-08-20 13:17:45 +10:00
Brad Fitzpatrick
e38fa91648 net/http: fix TimeoutHandler data races; hold lock longer
The existing lock needed to be held longer. If a timeout occured
while writing (but after the guarded timeout check), the writes
would clobber a future connection's buffer.

Also remove a harmless warning by making Write also set the
flag that headers were sent (implicitly), so we don't try to
write headers later (a no-op + warning) on timeout after we've
started writing.

Fixes #8414
Fixes #8209

LGTM=ruiu, adg
R=adg, ruiu
CC=golang-codereviews
https://golang.org/cl/123610043
2014-08-19 18:45:05 -07:00
Josh Bleecher Snyder
339a24da66 runtime: fix typo in comment
LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/125500043
2014-08-19 08:50:35 -07:00
Dmitriy Vyukov
8c25e08fbd runtime: fix TestGcLastTime on windows
Intended to fix:
http://build.golang.org/log/d6718ea67541b8c6be2bb14bcbc4e1c4261f67d7

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews
https://golang.org/cl/127520043
2014-08-19 19:32:27 +04:00
Josh Bleecher Snyder
c6442c994a cmd/6a, cmd/8a: document AJxx condition codes
LGTM=ruiu, rsc
R=rsc, ruiu
CC=golang-codereviews
https://golang.org/cl/130870043
2014-08-19 08:07:58 -07:00
Dmitriy Vyukov
ff3fa1b32d runtime: make the GC bitmap a byte array
Half the code in the garbage collector accesses the bitmap
as an array of bytes instead of as an array of uintptrs.
This is tricky to do correctly in a portable fashion,
it breaks on big-endian systems.
Make the bitmap a byte array.
Simplifies markallocated, scanblock and span sweep along the way,
as we don't need to recalculate bitmap position for each word.

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, rlh, rsc
https://golang.org/cl/125250043
2014-08-19 17:38:00 +04:00
Dmitriy Vyukov
fb44fb6cb7 runtime: always pass type to mallocgc when allocating scannable memory
We allocate scannable memory w/o type only in few places in runtime.
All these cases are not-performance critical (e.g. G or finq args buffer),
and in long term they all need to go away.
It's not worth it to have special code for this case in mallocgc.
So use special fake "notype" type for such allocations.

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, rlh, rsc
https://golang.org/cl/127450044
2014-08-19 15:59:42 +04:00
Dmitriy Vyukov
9198ed4bd6 runtime: allow copying of onM frame
Currently goroutines in onM can't be copied/shrunk
(including the very goroutine that triggers GC).
Special case onM to allow copying.

LGTM=daniel.morsing, khr
R=golang-codereviews, daniel.morsing, khr, rsc
CC=golang-codereviews, rlh
https://golang.org/cl/124550043
2014-08-19 14:24:03 +04:00
Dmitriy Vyukov
266d350f5e runtime: fix MemStats on 32-bits
Int64's do not fit into uintptr's.

LGTM=khr
R=golang-codereviews, khr, rsc
CC=golang-codereviews, rlh
https://golang.org/cl/128380043
2014-08-19 11:53:20 +04:00
Dmitriy Vyukov
5d40742728 runtime: convert Gosched to Go
LGTM=rlh, khr
R=golang-codereviews, rlh, bradfitz, khr
CC=golang-codereviews, rsc
https://golang.org/cl/127490043
2014-08-19 11:49:59 +04:00
Dmitriy Vyukov
53056c37c2 cmd/gc: fix heap buffer overflow
Fixes #8528.

LGTM=rsc
R=rsc, r, iant, bradfitz
CC=golang-codereviews
https://golang.org/cl/128230045
2014-08-19 11:49:36 +04:00
Dmitriy Vyukov
b3d5a695a6 runtime: improve diagnostics of non-copyable frames
LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, rlh, rsc
https://golang.org/cl/124560043
2014-08-19 11:46:19 +04:00
Dmitriy Vyukov
30ef2c7deb runtime: fix memstats
Newly allocated memory is subtracted from inuse, while it was never added to inuse.
Span leftovers are subtracted from both inuse and idle,
while they were never added.
Fixes #8544.
Fixes #8430.

LGTM=khr, cookieo9
R=golang-codereviews, khr, cookieo9
CC=golang-codereviews, rlh, rsc
https://golang.org/cl/130200044
2014-08-19 11:46:05 +04:00
Alex Brainman
2de65cad54 os: make SameFile handle paths like c:a.txt properly
Fixes #8490.

LGTM=r, rsc
R=golang-codereviews, rsc, bradfitz, r
CC=golang-codereviews
https://golang.org/cl/127740043
2014-08-19 14:59:56 +10:00
Alex Brainman
e4f3db3852 runtime: apply KindMask before comparison
Fixes windows build.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/127510043
2014-08-19 14:41:52 +10:00
Andrew Gerrand
0fee63351d html/template: don't panic on second execution of unescapable template
Fixes #8431.

LGTM=r
R=golang-codereviews, r, minux
CC=golang-codereviews
https://golang.org/cl/130830043
2014-08-19 14:24:14 +10:00
Evan Kroske
bdb2f976d3 net/http: correct error message for incorrect Body length
Fixes #8140.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/131900044
2014-08-18 20:40:12 -07:00
Russ Cox
3e9c7a8a1d runtime: fix windows/amd64 build after pc-relative 6l change
TBR=iant
CC=golang-codereviews
https://golang.org/cl/131900043
2014-08-18 22:12:51 -04:00
Josh Bleecher Snyder
a6feaf3aff liblink: fix encoding of ASETPC in 6a, 8a
It was incorrectly encoded as ASETLS.

LGTM=ruiu, rsc
R=rsc, ruiu
CC=golang-codereviews
https://golang.org/cl/126400043
2014-08-18 18:14:54 -07:00
Russ Cox
1806a5732b cmd/gc, runtime: refactor interface inlining decision into compiler
We need to change the interface value representation for
concurrent garbage collection, so that there is no ambiguity
about whether the data word holds a pointer or scalar.

This CL does NOT make any representation changes.

Instead, it removes representation assumptions from
various pieces of code throughout the tree.
The isdirectiface function in cmd/gc/subr.c is now
the only place that decides that policy.
The policy propagates out from there in the reflect
metadata, as a new flag in the internal kind value.

A follow-up CL will change the representation by
changing the isdirectiface function. If that CL causes
problems, it will be easy to roll back.

Update #8405.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews, r
https://golang.org/cl/129090043
2014-08-18 21:13:11 -04:00
Russ Cox
2e2beb567c doc/go1.4: mention pc-relative addressing on amd64
CC=golang-codereviews
https://golang.org/cl/124580043
2014-08-18 21:07:11 -04:00
Russ Cox
ca85d572d6 liblink: use pc-relative addressing for all memory references in amd64 code
LGTM=rminnich, iant
R=golang-codereviews, rminnich, iant
CC=golang-codereviews, r
https://golang.org/cl/125140043
2014-08-18 21:06:56 -04:00
Russ Cox
d89cd24857 runtime: avoid $sym(SB) as constant
The change to pc-relative addressing will make this illegal.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews, r
https://golang.org/cl/129890043
2014-08-18 21:06:42 -04:00
Dave Cheney
afb6221bf7 cmd/6g: fix undefined behavior in reg.c
Update #8527

Fixes, cmd/6g/reg.c:847:24: runtime error: left shift of 1 by 31 places cannot be represented in type 'int'

LGTM=minux, rsc
R=minux, rsc
CC=dvyukov, golang-codereviews
https://golang.org/cl/129290043
2014-08-19 10:52:50 +10:00
Andrew Gerrand
326f48eb9c fmt: print byte stringers correctly
type T byte
func (T) String() string { return "X" }

fmt.Sprintf("%s", []T{97, 98, 99, 100}) == "abcd"
fmt.Sprintf("%x", []T{97, 98, 99, 100}) == "61626364"
fmt.Sprintf("%v", []T{97, 98, 99, 100}) == "[X X X X]"

This change makes the last case print correctly.
Before, it would have been "[97 98 99 100]".

Fixes #8360.

LGTM=r
R=r, dan.kortschak
CC=golang-codereviews
https://golang.org/cl/129330043
2014-08-19 08:52:52 +10:00
Jeff R. Allen
6d248cec56 bzip2: improve performance
Improve performance of move-to-front by using cache-friendly
copies instead of doubly-linked list. Simplify so that the
underlying slice is the object. Remove the n=0 special case,
      which was actually slower with the copy approach.

benchmark                 old ns/op     new ns/op     delta
BenchmarkDecodeDigits     26429714      23859699      -9.72%
BenchmarkDecodeTwain      76684510      67591946      -11.86%

benchmark                 old MB/s     new MB/s     speedup
BenchmarkDecodeDigits     1.63         1.81         1.11x
BenchmarkDecodeTwain      1.63         1.85         1.13x

Updates #6754.

LGTM=adg, agl, josharian
R=adg, agl, josharian
CC=golang-codereviews
https://golang.org/cl/131840043
2014-08-18 14:41:28 -07:00
Keith Randall
523aa93288 runtime: move panicindex/panicslice to Go.
LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/130210043
2014-08-18 13:26:28 -07:00
Marcel van Lohuizen
65d8cb985f unicode: strconv: regexp: Upgrade to Unicode 7.0.0.
LGTM=r, bradfitz
R=r, bradfitz
CC=golang-codereviews
https://golang.org/cl/127470043
2014-08-18 20:26:10 +02:00
Dmitriy Vyukov
159926236c runtime: add more cases to GC info test
LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews, khr, rlh, rsc
https://golang.org/cl/125420043
2014-08-18 22:21:55 +04:00
Brad Fitzpatrick
1a8c00ea21 internal/syscall: add support for getrandom on arm
Added in linux commit eb6452537b28

LGTM=agl
R=agl
CC=golang-codereviews
https://golang.org/cl/130170043
2014-08-18 11:19:05 -07:00
Dmitriy Vyukov
e0df11d57e runtime: implement transfer cache
Currently we do the following dance after sweeping a span:
1. lock mcentral
2. remove the span from a list
3. unlock mcentral
4. unmark span
5. lock mheap
6. insert the span into heap
7. unlock mheap
8. lock mcentral
9. observe empty list
10. unlock mcentral
11. lock mheap
12. grab the span
13. unlock mheap
14. mark span
15. lock mcentral
16. insert the span into empty list
17. unlock mcentral

This change short-circuits this sequence to nothing,
that is, we just cache and use the span after sweeping.

This gives us functionality similar (even better) to tcmalloc's transfer cache.

benchmark            old ns/op     new ns/op     delta
BenchmarkMalloc8     22.2          19.5          -12.16%
BenchmarkMalloc16    31.0          26.6          -14.19%

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, rlh, rsc
https://golang.org/cl/119550043
2014-08-18 16:52:31 +04:00
Dmitriy Vyukov
101c00a44f runtime: fix dump of data/bss
Fixes #8530.

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, rsc
https://golang.org/cl/124440043
2014-08-18 16:42:24 +04:00
Dmitriy Vyukov
30940cfad6 runtime: don't acquirem on malloc fast path
Mallocgc must be atomic wrt GC, but for performance reasons
don't acquirem/releasem on fast path. The code does not have
split stack checks, so it can't be preempted by GC.
Functions like roundup/add are inlined. And onM/racemalloc are nosplit.
Also add debug code that checks these assumptions.

benchmark                     old ns/op     new ns/op     delta
BenchmarkMalloc8              20.5          17.2          -16.10%
BenchmarkMalloc16             29.5          27.0          -8.47%
BenchmarkMallocTypeInfo8      31.5          27.6          -12.38%
BenchmarkMallocTypeInfo16     34.7          30.9          -10.95%

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, rlh, rsc
https://golang.org/cl/123100043
2014-08-18 16:33:39 +04:00
Dmitriy Vyukov
c6fe53a230 runtime: mark with non-atomic operations when GOMAXPROCS=1
Perf builders show 3-5% GC pause increase with GOMAXPROCS=1 when marking with atomic ops:
http://goperfd.appspot.com/perfdetail?commit=a8a6e765d6a87f7ccb71fd85a60eb5a821151f85&commit0=3b864e02b987171e05e2e9d0840b85b5b6476386&kind=builder&builder=linux-amd64&benchmark=http

LGTM=rlh
R=golang-codereviews, rlh
CC=dave, golang-codereviews, khr, rsc
https://golang.org/cl/128340043
2014-08-16 09:07:55 +04:00