1
0
mirror of https://github.com/golang/go synced 2024-10-02 22:31:22 -06:00
Commit Graph

15554 Commits

Author SHA1 Message Date
Keith Randall
3306d119b0 runtime: unify fastrand1 and fastrand2
C and Go calling conventions are now compatible, so we
don't need two versions of this function.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/139080043
2014-09-02 14:33:33 -07:00
Keith Randall
1d8fa7fa5d runtime: convert select implementation to Go.
LGTM=rsc
R=golang-codereviews, bradfitz, iant, khr, rsc
CC=golang-codereviews
https://golang.org/cl/139020043
2014-09-02 14:13:29 -07:00
David Leon Gil
86040a091f crypto: Add SHA3 functions in go.crypto/sha3 to the Hash enum.
Reverse dependency of https://golang.org/cl/130950043/

LGTM=agl
R=golang-codereviews, agl
CC=agl, golang-codereviews
https://golang.org/cl/138800043
2014-09-02 12:23:49 -07:00
Russ Cox
fa2af441f1 runtime: convert traceback*.c to Go
The two converted files were nearly identical.
Instead of continuing that duplication, I merged them
into a single traceback.go.

Tested on arm, amd64, amd64p32, and 386.

LGTM=r
R=golang-codereviews, remyoudompheng, dave, r
CC=dvyukov, golang-codereviews, iant, khr
https://golang.org/cl/134200044
2014-09-02 15:12:53 -04:00
Russ Cox
8e89f87158 cmd/gc: fix runtime print(hex(x))
The code I wrote originally works for trivial functions
that are inlined at a call site in another package,
because that was how I wrote my local test.
Make hex(x) work for non-inlinable functions too.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews, r
https://golang.org/cl/140830043
2014-09-02 14:36:25 -04:00
Keith Randall
6baf173b67 runtime: move reflect trampolines into thunk file.
LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/133460043
2014-09-02 10:07:02 -07:00
Marko Tiikkaja
90e2e2b896 database/sql: Avoid re-preparing statements when all connections are busy
Previously, if all connections were busy, we would always
re-prepare the statement on the connection we were assigned from
the pool.  That meant that if all connections were busy most of the
time, the number of prepared statements for each connection would
keep increasing over time.

Instead, after getting a free connection, check to see if the
statement has already been prepared on it, and reuse the statement
handle if so.

LGTM=bradfitz
R=golang-codereviews, gobot, bradfitz
CC=golang-codereviews
https://golang.org/cl/116930043
2014-09-02 09:08:41 -07:00
Dmitriy Vyukov
60447c2d95 runtime: convert clearpools/registerPoolCleanup to Go
LGTM=bradfitz, rsc
R=golang-codereviews, bradfitz, rsc
CC=golang-codereviews, khr
https://golang.org/cl/133240043
2014-09-02 20:03:48 +04:00
Matthew Dempsky
ac49e6735b runtime: convert cpuprof from C to Go
LGTM=dvyukov, rsc
R=golang-codereviews, dvyukov, rsc
CC=golang-codereviews
https://golang.org/cl/132440043
2014-09-02 00:14:22 -04:00
Alex Brainman
a19e638db2 runtime/pprof: adjust cpuHogger so that tests pass on windows builders
LGTM=rsc
R=dvyukov, rsc
CC=golang-codereviews
https://golang.org/cl/140110043
2014-09-01 23:06:22 -04:00
David du Colombier
20d9cc4bb0 runtime: fix gogetenv on Plan 9
LGTM=rsc
R=rsc, ality
CC=golang-codereviews
https://golang.org/cl/137030043
2014-09-01 23:03:26 -04:00
Russ Cox
649c83530a runtime: fix race detector running Go code on g0 of non-main thread
It looks like this has just always been broken:
the race detector handles running Go code on g0 of the main thread
and on g0 of any extra threads created by non-Go code, but it does
not handle running Go code on g0 of non-main threads created by Go.
Handle that.

Should fix the race build failures on the dashboard.

We're running into this now because we are running more
and more Go code on g0.

TBR=dvyukov
CC=golang-codereviews
https://golang.org/cl/137910043
2014-09-01 21:55:57 -04:00
Alex Brainman
5dd9d582f1 time: update generated zoneinfo_abbrs_windows.go
The file in repo has been updated recently, but all these changes
are gone off the web site now. It seems web site gets updated once
in a while, so we'll update our file occasionally.

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/140780043
2014-09-02 11:54:24 +10:00
Russ Cox
a8c5e87b1e runtime: fix Stack
Fixes #8626.

LGTM=bradfitz
R=golang-codereviews
CC=bradfitz, golang-codereviews, iant, r
https://golang.org/cl/137050043
2014-09-01 19:42:22 -04:00
Russ Cox
548d0805f7 runtime: convert mprof.goc to mprof.go
The exported Go definitions appearing in mprof.go are
copied verbatim from debug.go.

The unexported Go funcs and types are new.
The C Bucket type used a union and was not a line-for-line translation.

LGTM=remyoudompheng
R=golang-codereviews, remyoudompheng
CC=dvyukov, golang-codereviews, iant, khr, r
https://golang.org/cl/137040043
2014-09-01 18:51:12 -04:00
Russ Cox
60be96217d runtime: fix windows build
#ifdef'ed out code wasn't updated for argp change.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/139040043
2014-09-01 17:36:45 -04:00
Russ Cox
fa5f86281e runtime: change concatstring panic to gothrow
It was a throw originally; it was converted incorrectly.

LGTM=dave
R=khr, dave
CC=golang-codereviews
https://golang.org/cl/139000043
2014-09-01 17:25:26 -04:00
Russ Cox
f611ae1c75 runtime: include os_*.h in the generated Go structs
Adding the #include to defs.c makes it get processed
by cmd/dist, which writes out Go equivalent for all the
C data structures defined in defs.c.

This in turn makes it necessary to define the Plink type,
used in os_plan9.h, in os_plan9.go. Rename it to _Plink
to avoid being exported.

LGTM=0intro, iant
R=golang-codereviews, iant, 0intro
CC=golang-codereviews, r
https://golang.org/cl/132490043
2014-09-01 17:25:10 -04:00
Russ Cox
3de7ba1873 runtime: change PC, SP values in Stkframe, Panic, Defer from byte* to uintptr
uintptr is better when translating to Go,
and in a few places it's better in C too.

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews, iant, khr
https://golang.org/cl/138980043
2014-09-01 10:05:16 -04:00
Dmitriy Vyukov
f16729781b runtime/race: better handling of atomic operations
This change fixes the last known false negative of the race detector --
detection of races between mutating atomic operations and non-atomic operations.
Race runtime already has functions for precise modelling of various atomic operations,
so this change just forwards all atomic ops to race runtime
instead of poor man modeling in sync/atomic package.
Performance is also improved -- full sync/atomic tests run in 60s instead of 85s now.

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, rsc
https://golang.org/cl/111310044
2014-09-01 08:04:33 -04:00
Rui Ueyama
5533780795 strings: use Rabin-Karp algorithm for LastIndex.
benchmark                  old ns/op     new ns/op     delta
BenchmarkSingleMatch       49443         52275         +5.73%
BenchmarkIndex             28.8          27.4          -4.86%
BenchmarkLastIndex         14.5          14.0          -3.45%
BenchmarkLastIndexHard1    3982782       2309200       -42.02%
BenchmarkLastIndexHard2    3985562       2287715       -42.60%
BenchmarkLastIndexHard3    3555259       2282866       -35.79%

LGTM=josharian, nigeltao
R=golang-codereviews, ality, josharian, bradfitz, dave, nigeltao, gobot, nightlyone
CC=golang-codereviews
https://golang.org/cl/102560043
2014-09-01 17:47:57 +10:00
Russ Cox
933169febb runtime: remove old malloc test programs
These haven't been run in ages.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews, iant, khr, r
https://golang.org/cl/134170043
2014-09-01 00:40:28 -04:00
Brad Fitzpatrick
76fb8a5e41 archive/zip: add Writer.Flush
This is needed for callers to be able to keep track of the
writing position within a zip file. Otherwise it's not
possible to compute the size of headers, and the TOC isn't
written until the very end.

LGTM=adg
R=adg
CC=golang-codereviews
https://golang.org/cl/134210043
2014-08-31 21:32:13 -07:00
Russ Cox
4dba769b73 runtime: paste mprof.goc into mprof.go as comments
NO CODE CHANGES HERE

The first conversion was not complete.
This CL doesn't make any actual changes,
but it inserts the missing mprof.goc code
as comments so that the next CL will have
useful diffs.

To make the diffs a bit more useful, removed
all semicolons, ->, and runtime· prefixes as well.

Also corrected order of a few functions in mprof.go
to match original order in mprof.goc.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews, iant, khr, r
https://golang.org/cl/134200043
2014-09-01 00:06:26 -04:00
Russ Cox
0bb14d74f1 cmd/ld: diagnose Go calling C
For example:
go build -ldflags -C cmd/go 2>&1 | awk '{print $NF}' | sort | uniq -c | sort -nr

LGTM=khr
R=khr, josharian
CC=golang-codereviews
https://golang.org/cl/135170044
2014-08-31 22:49:14 -04:00
Dmitri Shuralyov
310bc98083 net/http: fix typo in comment
LGTM=adg
R=golang-codereviews, adg
CC=golang-codereviews
https://golang.org/cl/138960043
2014-09-01 12:03:23 +10:00
Nigel Tao
686ecd83c0 image/png: make the CompressionLevel constants negative, reserving
positive numbers to mean a numeric zlib compression level.

LGTM=bradfitz, ruiu
R=bradfitz, ruiu
CC=golang-codereviews, jeff.allen
https://golang.org/cl/138860043
2014-09-01 10:02:52 +10:00
Ian Lance Taylor
a287567d3c runtime: fix Linux build
Make the definition of the EpollEvent data field consistent
across architectures, adapt the other use of it in
netpoll_epoll for the new definition, and use uint64 rather
than uintptr.

LGTM=dave
R=rsc, dave
CC=golang-codereviews
https://golang.org/cl/137890043
2014-08-30 18:15:55 -07:00
Russ Cox
86c4c4f00c cmd/cc: generate error if #pragma pack off does anything
We can't translate misaligned things to Go, so start rejecting them in C.

The only one in any build appears to be EpollEvent on linux/amd64.
Fix that.

LGTM=r
R=golang-codereviews, r, dvyukov
CC=golang-codereviews, iant
https://golang.org/cl/137020043
2014-08-30 14:54:09 -04:00
Russ Cox
50199d7b35 runtime: translate env*.c to Go
In an earlier CL I wrote a separate Go-only version, but that broke Plan 9,
because the Go-only version assumed a non-Plan 9 system.

Translate the real ones instead.

LGTM=r
R=golang-codereviews, r
CC=0intro, golang-codereviews, iant, khr
https://golang.org/cl/140050044
2014-08-30 14:53:47 -04:00
Dmitriy Vyukov
2fd62a42b4 runtime/pprof: make CPU profiling tests more robust
Under the race detector most of the samples go into race runtime,
because of that freebsd race builder constantly fails on this test.

LGTM=bradfitz, rsc
R=golang-codereviews, bradfitz, rsc
CC=golang-codereviews, minux
https://golang.org/cl/133370043
2014-08-30 22:38:54 +04:00
Russ Cox
7006aafdcd runtime: preallocate panic errors for index and slice
This avoids allocating at the panic sites.

LGTM=r, khr
R=golang-codereviews, r, khr
CC=dvyukov, golang-codereviews, iant, khr
https://golang.org/cl/136020043
2014-08-30 14:18:41 -04:00
Keith Randall
47d6af2f68 runtime: convert chanrecv to Go
LGTM=rsc, dvyukov
R=golang-codereviews, bradfitz, rsc, dvyukov
CC=golang-codereviews
https://golang.org/cl/136980044
2014-08-30 11:03:28 -07:00
Evan Kroske
07d86b1f2d net/url: make Userinfo.String() escape ? and add test for shouldEscape
See RFC 3986 §3.2.1.
Fixes #6573.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/126560043
2014-08-30 10:34:51 -07:00
Evan Kroske
f4cbaa38ae go/doc/headscan: update script to count headings with an ID attribute
Fixes script used to sanity-check the heading-detection heuristic of go/doc.
Fixes #8467.

LGTM=gri
R=golang-codereviews, gobot, gri
CC=golang-codereviews
https://golang.org/cl/128720043
2014-08-30 10:27:36 -07:00
Matthew Dempsky
b70bc22cd0 runtime: retry fix openbsd build
Tested on linux/amd64 too this time.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=dave, golang-codereviews, iant, rsc
https://golang.org/cl/140050043
2014-08-29 23:13:17 -07:00
Kelsey Hightower
29f9f3ec80 net/http: add BasicAuth method to *http.Request
The net/http package supports setting the HTTP Authorization header
using the Basic Authentication Scheme as defined in RFC 2617, but does
not provide support for extracting the username and password from an
authenticated request using the Basic Authentication Scheme.

Add BasicAuth method to *http.Request that returns the username and
password from authenticated requests using the Basic Authentication
Scheme.

Fixes #6779.

LGTM=bradfitz
R=golang-codereviews, josharian, bradfitz, alberto.garcia.hierro, blakesgentry
CC=golang-codereviews
https://golang.org/cl/76540043
2014-08-29 22:19:30 -07:00
Russ Cox
397bdb216f runtime: increase nosplit area to 192
In CL 131450043, which raised it to 160,
I'd raise it to 192 if necessary.
Apparently it is necessary on windows/amd64.

One note for those concerned about the growth:
in the old segmented stack world, we wasted this much
space at the bottom of every stack segment.
In the new contiguous stack world, each goroutine has
only one stack segment, so we only waste this much space
once per goroutine. So even raising the limit further might
still be a net savings.

Fixes windows/amd64 build.

TBR=r
CC=golang-codereviews
https://golang.org/cl/132480043
2014-08-30 00:56:52 -04:00
Russ Cox
0316dafda2 runtime: rename SysAlloc to sysAlloc for Go
Renaming the C SysAlloc will let Go define a prototype without exporting it.
For use in cpuprof.goc's translation to Go.

LGTM=mdempsky
R=golang-codereviews, mdempsky
CC=golang-codereviews, iant
https://golang.org/cl/140060043
2014-08-30 00:54:40 -04:00
Dmitriy Vyukov
d4df63c3e8 runtime: convert type algorithms to Go
Actually it mostly deletes code -- alg.print and alg.copy go away.
There was only one usage of alg.print for debug purposes.
Alg.copy is used in chan.goc, but Keith replaces them with
memcopy during conversion, so alg.copy is not needed as well.
Converting them would be significant amount of work
for no visible benefit.

LGTM=crawshaw, rsc, khr
R=golang-codereviews, crawshaw, khr
CC=golang-codereviews, rsc
https://golang.org/cl/139930044
2014-08-30 08:40:56 +04:00
Russ Cox
1a976f1576 undo CL 135230043 / 60812bad3769
broke api check everywhere

««« original CL description
runtime: fix openbsd build

LGTM=iant
R=iant, minux
CC=golang-codereviews, jsing
https://golang.org/cl/135230043

»»»

TBR=mdempsky
CC=golang-codereviews
https://golang.org/cl/137010043
2014-08-30 00:16:07 -04:00
Alex A Skinner
39a021bc0e net: implement query-response fast failover in builtin dns stub resolver
Speed improvements via code cleanup, and changes to make go dns behave more like glibc resolver.  See https://groups.google.com/forum/#!topic/golang-dev/lV-0aHqxVeo

Fixes #6579.

Benchmark results on linux/amd64

benchmark                                  old ns/op    new ns/op    delta
BenchmarkGoLookupIP                          4831903      2572937  -46.75%
BenchmarkGoLookupIPNoSuchHost               10114105      2419641  -76.08%
BenchmarkGoLookupIPWithBrokenNameServer  20007735624   5004490730  -74.99%

benchmark                                 old allocs   new allocs    delta
BenchmarkGoLookupIP                              287          288    0.35%
BenchmarkGoLookupIPNoSuchHost                    204          102  -50.00%
BenchmarkGoLookupIPWithBrokenNameServer          410          358  -12.68%

benchmark                                  old bytes    new bytes    delta
BenchmarkGoLookupIP                            13181        13271    0.68%
BenchmarkGoLookupIPNoSuchHost                  17260         8714  -49.51%
BenchmarkGoLookupIPWithBrokenNameServer        28160        22432  -20.34%

LGTM=mikioh.mikioh
R=golang-codereviews, mikioh.mikioh, bradfitz, josharian, abursavich
CC=golang-codereviews
https://golang.org/cl/128820043
2014-08-30 13:12:28 +09:00
Matthew Dempsky
2758cb75f0 runtime: fix openbsd build
LGTM=iant
R=iant, minux
CC=golang-codereviews, jsing
https://golang.org/cl/135230043
2014-08-29 20:51:26 -07:00
Ian Lance Taylor
0b9e472300 runtime: rename Sigaltstack to SigaltstackT
Avoids a conflict between the type and function sigaltstack.

LGTM=crawshaw
R=rsc, crawshaw
CC=golang-codereviews
https://golang.org/cl/138920043
2014-08-29 16:11:05 -07:00
Mikio Hara
21967f2c9a undo CL 107150043 / caa2646daa63
preparing for the syscall package freeze.
the change for issue 8218 is only applied to go.sys/unix.

««« original CL description
syscall: implement setresuid(2) and setresgid(2) on OpenBSD/FreeBSD/DragonflyBSD

Fixes #8218.

LGTM=iant
R=golang-codereviews, iant, minux
CC=golang-codereviews
https://golang.org/cl/107150043

»»»

LGTM=r
R=r, iant, golang-codereviews
CC=golang-codereviews
https://golang.org/cl/138840044
2014-08-30 07:52:20 +09:00
Alex A Skinner
854dbb7fdc net: ensure identical queries are not sent multiple times in builtin stub resolver
Prevents non-rooted queries with > ndots dots from being tried twice on error.
Fixes #8616.

Benchmark results on linux/amd64
benchmark                        old ns/op    new ns/op    delta
BenchmarkGoLookupIPNoSuchHost      8212394      4413293  -46.26%

benchmark                       old allocs   new allocs    delta
BenchmarkGoLookupIPNoSuchHost          216          108  -50.00%

benchmark                        old bytes    new bytes    delta
BenchmarkGoLookupIPNoSuchHost        17460         8726  -50.02%

LGTM=iant, mikioh.mikioh
R=golang-codereviews, iant, mikioh.mikioh
CC=golang-codereviews
https://golang.org/cl/137870043
2014-08-30 07:50:50 +09:00
Russ Cox
858c57f5bd runtime: make allp a static array
It is anyway, just an allocated one.
Giving it a sized type makes Go access nicer.

LGTM=iant
R=dvyukov, iant
CC=golang-codereviews
https://golang.org/cl/139960043
2014-08-29 16:41:08 -04:00
Russ Cox
3a7f6646cf runtime: convert lock*.c to Go
LGTM=r, iant
R=golang-codereviews, r, iant
CC=dvyukov, golang-codereviews, khr
https://golang.org/cl/139930043
2014-08-29 16:20:48 -04:00
Russ Cox
9a75c74836 runtime: include constants and defs_*_*.h types in generated Go defs
I had to rename Kevent and Sigaction to avoid the functions of the
same (lowercase) name.

LGTM=iant, r
R=golang-codereviews, r, iant, aram.h
CC=dvyukov, golang-codereviews, khr
https://golang.org/cl/140740043
2014-08-29 16:00:31 -04:00
Adam Langley
7f2e68e982 crypto: add Signer
Signer is an interface to support opaque private keys.
These keys typically result from being kept in special hardware
(i.e. a TPM) although sometimes operating systems provide a
similar interface using process isolation for security rather
than hardware boundaries.

This changes provides interfaces for representing them and
alters crypto/tls so that client certificates can use
opaque keys.

LGTM=bradfitz
R=bradfitz
CC=golang-codereviews, jdeprez
https://golang.org/cl/114680043
2014-08-29 12:36:30 -07:00