1
0
mirror of https://github.com/golang/go synced 2024-11-19 15:44:44 -07:00
go/src/runtime
Josh Bleecher Snyder 504bc3ed24 cmd/compile, runtime: specialize convT2x, don't alloc for zero vals
Prior to this CL, all runtime conversions
from a concrete value to an interface went
through one of two runtime calls: convT2E or convT2I.
However, in practice, basic types are very common.
Specializing convT2x for those basic types allows
for a more efficient implementation for those types.
For basic scalars and strings, allocation and copying
can use the same methods as normal code.
For pointer-free types, allocation can occur without
zeroing, and copying can take place without GC calls.
For slices, copying is cheaper and simpler.

This CL adds twelve runtime routines:

convT2E16, convT2I16
convT2E32, convT2I32
convT2E64, convT2I64
convT2Estring, convT2Istring
convT2Eslice, convT2Islice
convT2Enoptr, convT2Inoptr

While compiling make.bash, 93% of all convT2x calls
are now to one of these specialized convT2x call.

Within specialized convT2x routines, it is cheap to check
for a zero value, in a way that it is not in general.
When we detect a zero value there, we return a pointer
to zeroVal, rather than allocating.

name                         old time/op  new time/op  delta
ConvT2Ezero/zero/16-8        17.9ns ± 2%   3.0ns ± 3%  -83.20%  (p=0.000 n=56+56)
ConvT2Ezero/zero/32-8        17.8ns ± 2%   3.0ns ± 3%  -83.15%  (p=0.000 n=59+60)
ConvT2Ezero/zero/64-8        20.1ns ± 1%   3.0ns ± 2%  -84.98%  (p=0.000 n=57+57)
ConvT2Ezero/zero/str-8       32.6ns ± 1%   3.0ns ± 4%  -90.70%  (p=0.000 n=59+60)
ConvT2Ezero/zero/slice-8     36.7ns ± 2%   3.0ns ± 2%  -91.78%  (p=0.000 n=59+59)
ConvT2Ezero/zero/big-8       91.9ns ± 2%  85.9ns ± 2%   -6.52%  (p=0.000 n=57+57)
ConvT2Ezero/nonzero/16-8     17.7ns ± 2%  12.7ns ± 3%  -28.38%  (p=0.000 n=55+60)
ConvT2Ezero/nonzero/32-8     17.8ns ± 1%  12.7ns ± 1%  -28.44%  (p=0.000 n=54+57)
ConvT2Ezero/nonzero/64-8     20.0ns ± 1%  15.0ns ± 1%  -24.90%  (p=0.000 n=56+58)
ConvT2Ezero/nonzero/str-8    32.6ns ± 1%  25.7ns ± 1%  -21.17%  (p=0.000 n=58+55)
ConvT2Ezero/nonzero/slice-8  36.8ns ± 2%  30.4ns ± 1%  -17.32%  (p=0.000 n=60+52)
ConvT2Ezero/nonzero/big-8    92.1ns ± 2%  85.9ns ± 2%   -6.70%  (p=0.000 n=57+59)

Benchmarks on a real program (the compiler):

name       old time/op      new time/op      delta
Template        227ms ± 5%       221ms ± 2%  -2.48%  (p=0.000 n=30+26)
Unicode         102ms ± 5%       100ms ± 3%  -1.30%  (p=0.009 n=30+26)
GoTypes         656ms ± 5%       659ms ± 4%    ~     (p=0.208 n=30+30)
Compiler        2.82s ± 2%       2.82s ± 1%    ~     (p=0.614 n=29+27)
Flate           128ms ± 2%       128ms ± 5%    ~     (p=0.783 n=27+28)
GoParser        158ms ± 3%       158ms ± 3%    ~     (p=0.261 n=28+30)
Reflect         408ms ± 7%       401ms ± 3%    ~     (p=0.075 n=30+30)
Tar             123ms ± 6%       121ms ± 8%    ~     (p=0.287 n=29+30)
XML             220ms ± 2%       220ms ± 4%    ~     (p=0.805 n=29+29)

name       old user-ns/op   new user-ns/op   delta
Template   281user-ms ± 4%  279user-ms ± 3%  -0.87%  (p=0.044 n=28+28)
Unicode    142user-ms ± 4%  141user-ms ± 3%  -1.04%  (p=0.015 n=30+27)
GoTypes    884user-ms ± 3%  886user-ms ± 2%    ~     (p=0.532 n=30+30)
Compiler   3.94user-s ± 3%  3.92user-s ± 1%    ~     (p=0.185 n=30+28)
Flate      165user-ms ± 2%  165user-ms ± 4%    ~     (p=0.780 n=27+29)
GoParser   209user-ms ± 2%  208user-ms ± 3%    ~     (p=0.453 n=28+30)
Reflect    533user-ms ± 6%  526user-ms ± 3%    ~     (p=0.057 n=30+30)
Tar        156user-ms ± 6%  154user-ms ± 6%    ~     (p=0.133 n=29+30)
XML        288user-ms ± 4%  288user-ms ± 4%    ~     (p=0.633 n=30+30)

name       old alloc/op     new alloc/op     delta
Template       41.0MB ± 0%      40.9MB ± 0%  -0.11%  (p=0.000 n=29+29)
Unicode        32.6MB ± 0%      32.6MB ± 0%    ~     (p=0.572 n=29+30)
GoTypes         122MB ± 0%       122MB ± 0%  -0.10%  (p=0.000 n=30+30)
Compiler        482MB ± 0%       481MB ± 0%  -0.07%  (p=0.000 n=30+29)
Flate          26.6MB ± 0%      26.6MB ± 0%    ~     (p=0.096 n=30+30)
GoParser       32.7MB ± 0%      32.6MB ± 0%  -0.06%  (p=0.011 n=28+28)
Reflect        84.2MB ± 0%      84.1MB ± 0%  -0.17%  (p=0.000 n=29+30)
Tar            27.7MB ± 0%      27.7MB ± 0%  -0.05%  (p=0.032 n=27+28)
XML            44.7MB ± 0%      44.7MB ± 0%    ~     (p=0.131 n=28+30)

name       old allocs/op    new allocs/op    delta
Template         373k ± 1%        370k ± 1%  -0.76%  (p=0.000 n=30+30)
Unicode          325k ± 1%        325k ± 1%    ~     (p=0.383 n=29+30)
GoTypes         1.16M ± 0%       1.15M ± 0%  -0.75%  (p=0.000 n=29+30)
Compiler        4.15M ± 0%       4.13M ± 0%  -0.59%  (p=0.000 n=30+29)
Flate            238k ± 1%        237k ± 1%  -0.62%  (p=0.000 n=30+30)
GoParser         304k ± 1%        302k ± 1%  -0.64%  (p=0.000 n=30+28)
Reflect         1.00M ± 0%       0.99M ± 0%  -1.10%  (p=0.000 n=29+30)
Tar              245k ± 1%        244k ± 1%  -0.59%  (p=0.000 n=27+29)
XML              391k ± 1%        389k ± 1%  -0.59%  (p=0.000 n=29+30)

Change-Id: Id7f456d690567c2b0a96b0d6d64de8784b6e305f
Reviewed-on: https://go-review.googlesource.com/36476
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
2017-02-28 19:23:33 +00:00
..
cgo runtime: add cgo support for GOARCH=mips{,le} 2016-12-14 23:52:33 +00:00
debug runtime/debug: don't run a GC when setting SetGCPercent negative 2017-02-10 18:28:37 +00:00
internal runtime/internal/atomic: crash on unaligned 64-bit ops on 32-bit MIPS 2016-11-22 02:05:07 +00:00
msan
pprof runtime/pprof: handle empty stack traces in Profile.Add 2017-02-27 17:11:07 +00:00
race runtime/race: allow TestFail to run longer than 0.00s 2016-11-07 02:55:52 +00:00
testdata runtime: add explicit (void) in C to avoid GCC 7 problem 2017-01-30 19:27:49 +00:00
trace os: use poller for file I/O 2017-02-15 19:31:55 +00:00
alg.go runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
append_test.go runtime: make append only clear uncopied memory 2016-10-04 22:40:20 +00:00
asm_386.s runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
asm_amd64.s runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
asm_amd64p32.s runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
asm_arm64.s runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
asm_arm.s runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
asm_mips64x.s runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
asm_mipsx.s runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
asm_ppc64x.h all: single space after period. 2016-03-02 00:13:47 +00:00
asm_ppc64x.s runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
asm_s390x.s runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
asm.s runtime: cull dead code 2016-08-22 16:41:34 +00:00
atomic_arm64.s runtime: break atomics out into package runtime/internal/atomic 2015-11-10 17:38:04 +00:00
atomic_mips64x.s
atomic_mipsx.s runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
atomic_pointer.go runtime: perform write barrier before pointer write 2016-10-28 20:47:52 +00:00
atomic_ppc64x.s sync/atomic, runtime/internal/atomic: improve ppc64x atomics 2016-05-05 18:52:28 +00:00
callers_test.go
cgo_mmap.go runtime/cgo: use libc for sigaction syscalls when possible 2016-11-16 05:38:38 +00:00
cgo_ppc64x.go
cgo_sigaction.go runtime/cgo: use libc for sigaction syscalls when possible 2016-11-16 05:38:38 +00:00
cgo.go cmd/cgo, runtime, runtime/cgo: TSAN support for malloc 2016-05-25 23:22:24 +00:00
cgocall.go runtime: handle SIGPIPE in c-archive and c-shared programs 2017-02-03 20:07:36 +00:00
cgocallback.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
cgocheck.go runtime: access modules via a slice 2016-11-01 16:04:12 +00:00
chan_test.go all: don't call t.Fatal from a goroutine 2016-11-15 15:13:48 +00:00
chan.go runtime: perform write barriers on direct channel receive 2016-10-31 23:46:13 +00:00
chanbarrier_test.go
closure_test.go
compiler.go
complex_test.go
complex.go
cpuflags_amd64.go runtime: improve memmove for amd64 2016-10-06 10:21:58 +00:00
cpuidlow_amd64.s runtime: improve memmove for amd64 2016-10-06 10:21:58 +00:00
cpuprof.go runtime/pprof: use new profile buffers for CPU profiling 2017-02-24 17:01:47 +00:00
cputicks.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
crash_cgo_test.go runtime: check that pprof accepts but doesn't need executable 2017-02-24 20:46:37 +00:00
crash_nonunix_test.go runtime: if the test program hangs, try to get a stack trace 2016-06-15 15:03:48 +00:00
crash_test.go runtime: check that pprof accepts but doesn't need executable 2017-02-24 20:46:37 +00:00
crash_unix_test.go all: sprinkle t.Parallel on some slow tests 2016-11-04 16:56:57 +00:00
debug.go
defs1_linux.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs1_netbsd_386.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs1_netbsd_amd64.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs1_netbsd_arm.go runtime, cmd/link: fix netbsd/arm EABI support 2016-10-24 15:23:13 +00:00
defs1_solaris_amd64.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs2_linux.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs3_linux.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_arm_linux.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_darwin_386.go
defs_darwin_amd64.go runtime: write sigsetstack for Darwin, fix sigaction arg 2015-12-18 20:56:10 +00:00
defs_darwin_arm64.go
defs_darwin_arm.go
defs_darwin.go
defs_dragonfly_amd64.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_dragonfly.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_freebsd_386.go runtime: sleep on CLOCK_MONOTONIC in futexsleep1 on freebsd 2016-10-01 01:25:21 +00:00
defs_freebsd_amd64.go runtime: sleep on CLOCK_MONOTONIC in futexsleep1 on freebsd 2016-10-01 01:25:21 +00:00
defs_freebsd_arm.go runtime: sleep on CLOCK_MONOTONIC in futexsleep1 on freebsd 2016-10-01 01:25:21 +00:00
defs_freebsd.go runtime: sleep on CLOCK_MONOTONIC in futexsleep1 on freebsd 2016-10-01 01:25:21 +00:00
defs_linux_386.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_linux_amd64.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_linux_arm64.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_linux_arm.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_linux_mips64x.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_linux_mipsx.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
defs_linux_ppc64.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_linux_ppc64le.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_linux_s390x.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_linux.go
defs_nacl_386.go
defs_nacl_amd64p32.go
defs_nacl_arm.go
defs_netbsd_386.go
defs_netbsd_amd64.go
defs_netbsd_arm.go
defs_netbsd.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_openbsd_386.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_openbsd_amd64.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_openbsd_arm.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_openbsd.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_plan9_386.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
defs_plan9_amd64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
defs_plan9_arm.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
defs_solaris_amd64.go
defs_solaris.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_windows_386.go runtime: use (*context) ip, setip, sp and setsp everywhere on windows 2015-04-09 00:57:28 +00:00
defs_windows_amd64.go
defs_windows.go
duff_386.s
duff_amd64.s
duff_arm64.s runtime, cmd/compile: implement and use DUFFCOPY on ARM64 2016-09-27 15:07:31 +00:00
duff_arm.s
duff_mips64x.s
duff_ppc64x.s
env_plan9.go
env_posix.go
env_test.go
error.go cmd/compile: make panicwrap argument-free 2017-02-11 23:27:35 +00:00
example_test.go runtime: add Frames example 2017-02-13 06:10:35 +00:00
export_arm_test.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
export_futex_test.go
export_linux_test.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
export_mmap_test.go runtime: fetch physical page size from the OS 2016-09-06 21:05:50 +00:00
export_test.go runtime: new profile buffer implementation supporting label pointers 2017-02-23 19:47:23 +00:00
export_windows_test.go runtime: revert "do not call timeBeginPeriod on windows" 2016-04-09 16:11:41 +00:00
extern.go runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
fastlog2_test.go
fastlog2.go all: fix misspellings 2017-01-07 16:53:25 +00:00
fastlog2table.go pprof: improve sampling for heap profiling 2015-10-05 08:15:09 +00:00
funcdata.h cmd/internal/obj, runtime: update funcdata comments 2017-02-27 22:29:28 +00:00
futex_test.go
gc_test.go cmd/compile: do more type conversion inline 2016-11-02 21:33:03 +00:00
gcinfo_test.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
go_tls.h
HACKING.md runtime: expand HACKING.md 2017-01-06 18:30:36 +00:00
hash32.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
hash64.go runtime: add s390x support (modified files only) 2016-04-06 04:25:06 +00:00
hash_test.go runtime: remove TestCollisions from -short 2016-09-24 03:10:13 +00:00
hashmap_fast.go runtime: limit the number of map overflow buckets 2016-09-13 17:53:32 +00:00
hashmap.go runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
heapdump.go time: optimize Now on darwin, windows 2017-02-09 14:45:16 +00:00
iface_test.go cmd/compile, runtime: specialize convT2x, don't alloc for zero vals 2017-02-28 19:23:33 +00:00
iface.go cmd/compile, runtime: specialize convT2x, don't alloc for zero vals 2017-02-28 19:23:33 +00:00
lfstack_32bit.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
lfstack_64bit.go runtime: merge lfstack_amd64.go into lfstack_64bit.go 2016-04-11 06:18:52 +00:00
lfstack_test.go
lfstack.go runtime: fix stale comment in lfstack 2016-06-16 19:45:33 +00:00
lock_futex.go runtime: find a home for orphaned comments 2016-04-14 18:34:09 +00:00
lock_sema.go
Makefile
malloc_test.go runtime: add number of forced GCs to MemStats 2016-12-07 20:59:16 +00:00
malloc.go runtime: make fastrand to generate 32bit values 2017-02-13 20:22:02 +00:00
map_test.go all: sprinkle t.Parallel on some slow tests 2016-11-04 16:56:57 +00:00
mapspeed_test.go
mbarrier.go runtime: new profile buffer implementation supporting label pointers 2017-02-23 19:47:23 +00:00
mbitmap.go runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
mcache.go runtime: make fixalloc zero allocations on reuse 2016-10-28 18:20:23 +00:00
mcentral.go runtime: mark several types go:notinheap 2016-10-15 17:58:20 +00:00
mem_bsd.go
mem_darwin.go
mem_linux.go runtime: don't hard-code physical page size 2016-09-06 21:05:53 +00:00
mem_plan9.go runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
mem_windows.go
memclr_386.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memclr_amd64.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memclr_arm64.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memclr_arm.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memclr_mips64x.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memclr_mipsx.s runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
memclr_plan9_386.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memclr_plan9_amd64.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memclr_ppc64x.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memclr_s390x.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memmove_386.s all: fix obsolete inferno-os links 2016-08-29 04:54:42 +00:00
memmove_amd64.s runtime: amd64, use 4-byte ops for memmove of 4 bytes 2017-01-23 19:39:22 +00:00
memmove_arm64.s
memmove_arm.s all: fix obsolete inferno-os links 2016-08-29 04:54:42 +00:00
memmove_linux_amd64_test.go all: sprinkle t.Parallel on some slow tests 2016-11-04 16:56:57 +00:00
memmove_mips64x.s
memmove_mipsx.s runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
memmove_nacl_amd64p32.s
memmove_plan9_386.s all: fix obsolete inferno-os links 2016-08-29 04:54:42 +00:00
memmove_plan9_amd64.s all: fix obsolete inferno-os links 2016-08-29 04:54:42 +00:00
memmove_ppc64x.s runtime: improve memmove performance ppc64,ppc64le 2016-04-13 15:27:59 +00:00
memmove_s390x.s runtime: add s390x support (new files and lfstack_64bit.go modifications) 2016-04-07 18:56:54 +00:00
memmove_test.go runtime: amd64, use 4-byte ops for memmove of 4 bytes 2017-01-23 19:39:22 +00:00
mfinal_test.go runtime: enable TestEmptySlice 2015-07-30 04:47:16 +00:00
mfinal.go cmd/compile: do more type conversion inline 2016-11-02 21:33:03 +00:00
mfixalloc.go runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
mgc.go sync: make Mutex more fair 2017-02-17 17:24:59 +00:00
mgcmark.go runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
mgcsweep.go runtime: debug prints for spanBytesAlloc underflow 2017-01-10 15:59:39 +00:00
mgcsweepbuf.go runtime: make markrootSpans time proportional to in-use spans 2016-10-25 22:32:59 +00:00
mgcwork.go runtime: wake idle Ps when enqueuing GC work 2016-11-20 22:44:22 +00:00
mheap.go runtime: compute size classes statically 2016-10-30 03:48:49 +00:00
mkduff.go runtime: update mkduff legacy comments 2016-10-12 14:51:50 +00:00
mkfastlog2table.go pprof: improve sampling for heap profiling 2015-10-05 08:15:09 +00:00
mknacl.sh all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
mksizeclasses.go runtime: add table of size classes in a comment 2017-01-08 00:01:30 +00:00
mmap.go runtime: find a home for orphaned comments 2016-04-14 18:34:09 +00:00
mprof.go runtime: ensure elapsed cycles are not negative 2016-10-28 22:14:10 +00:00
msan0.go
msan_amd64.s runtime/cgo: use libc for sigaction syscalls when possible 2016-11-16 05:38:38 +00:00
msan.go runtime: check for nil g and m in msanread 2017-01-19 23:06:54 +00:00
msize.go runtime: compute size classes statically 2016-10-30 03:48:49 +00:00
mstats.go time: optimize Now on darwin, windows 2017-02-09 14:45:16 +00:00
net_plan9.go net: refactor poller into new internal/poll package 2017-02-13 18:36:28 +00:00
netpoll_epoll.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
netpoll_kqueue.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
netpoll_nacl.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
netpoll_solaris.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
netpoll_stub.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
netpoll_windows.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
netpoll.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
noasm.go all: fix assembly vet issues 2016-08-25 18:52:31 +00:00
norace_linux_test.go
norace_test.go
os2_freebsd.go runtime: if we don't handle a signal on a non-Go thread, raise it 2015-07-22 20:26:29 +00:00
os2_nacl.go
os2_openbsd.go
os2_plan9.go
os2_solaris.go
os3_plan9.go runtime: enable/disable SIGPROF if needed when profiling 2017-02-09 18:53:34 +00:00
os3_solaris.go runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
os_android.go
os_darwin_arm64.go runtime: rename fastrand1 to fastrand 2016-08-30 23:59:21 +00:00
os_darwin_arm.go runtime: rename fastrand1 to fastrand 2016-08-30 23:59:21 +00:00
os_darwin.go runtime: os.Executable runtime support for Darwin 2016-11-07 20:18:36 +00:00
os_dragonfly.go runtime: minor simplifications to signal code 2016-09-28 13:12:47 +00:00
os_freebsd_arm.go runtime: rename fastrand1 to fastrand 2016-08-30 23:59:21 +00:00
os_freebsd.go runtime: sleep on CLOCK_MONOTONIC in futexsleep1 on freebsd 2016-10-01 01:25:21 +00:00
os_linux_arm64.go runtime: rename fastrand1 to fastrand 2016-08-30 23:59:21 +00:00
os_linux_arm.go runtime: skip floating point hardware check on Android 2016-12-22 19:31:15 +00:00
os_linux_be64.go runtime: fix sigset type for ppc64 big-endian GNU/Linux 2016-10-06 22:24:40 +00:00
os_linux_generic.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
os_linux_mips64x.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
os_linux_mipsx.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
os_linux_noauxv.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
os_linux_ppc64x.go runtime: get ppc64x ISA level and hardware capabilities from HWCAP/HWCAP2 2016-11-01 13:41:04 +00:00
os_linux_s390x.go runtime: get s390x vector facility availability from AT_HWCAP 2016-10-19 21:50:13 +00:00
os_linux.go runtime: check sched_getaffinity return value 2017-01-03 22:35:42 +00:00
os_nacl_arm.go runtime: rename fastrand1 to fastrand 2016-08-30 23:59:21 +00:00
os_nacl.go runtime: enable/disable SIGPROF if needed when profiling 2017-02-09 18:53:34 +00:00
os_netbsd_386.go os: consolidate os{1,2}_*.go files 2016-04-06 05:04:47 +00:00
os_netbsd_amd64.go os: consolidate os{1,2}_*.go files 2016-04-06 05:04:47 +00:00
os_netbsd_arm.go runtime: rename fastrand1 to fastrand 2016-08-30 23:59:21 +00:00
os_netbsd.go runtime: minor simplifications to signal code 2016-09-28 13:12:47 +00:00
os_openbsd_arm.go runtime: rename fastrand1 to fastrand 2016-08-30 23:59:21 +00:00
os_openbsd.go runtime: minor simplifications to signal code 2016-09-28 13:12:47 +00:00
os_plan9_arm.go runtime: rename fastrand1 to fastrand 2016-08-30 23:59:21 +00:00
os_plan9.go net: implement asynchonous cancelable I/O on Plan 9 2016-11-12 05:44:36 +00:00
os_solaris.go
os_windows.go runtime: enable/disable SIGPROF if needed when profiling 2017-02-09 18:53:34 +00:00
panic.go runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
plugin.go cmd/compile: optimize non-empty-interface type conversions 2017-02-13 18:16:31 +00:00
print.go runtime: include pre-panic/throw logs in core dumps 2016-11-11 21:29:53 +00:00
proc_runtime_test.go
proc_test.go runtime: fix goroutine priority elevation 2016-05-19 18:18:13 +00:00
proc.go runtime/pprof: use new profile buffers for CPU profiling 2017-02-24 17:01:47 +00:00
profbuf_test.go runtime: new profile buffer implementation supporting label pointers 2017-02-23 19:47:23 +00:00
profbuf.go runtime: new profile buffer implementation supporting label pointers 2017-02-23 19:47:23 +00:00
proflabel.go runtime: add definitions for SetGoroutineLabels and Do 2017-02-06 20:29:37 +00:00
race0.go runtime: per-P contexts for race detector 2016-05-03 11:00:43 +00:00
race_amd64.s runtime: fix race atomic operations on external memory 2016-06-29 15:30:54 +00:00
race.go runtime: remove unused RaceSemacquire declaration 2017-02-27 20:15:51 +00:00
rand_test.go runtime: speed up fastrand() % n 2017-02-14 00:01:22 +00:00
rdebug.go runtime: simplify setPanicOnFault slightly 2016-04-13 06:14:06 +00:00
rt0_android_386.s
rt0_android_amd64.s runtime: fall back to /proc/self/auxv in Android libs 2016-11-29 15:27:53 +00:00
rt0_android_arm64.s runtime: fall back to /proc/self/auxv in Android libs 2016-11-29 15:27:53 +00:00
rt0_android_arm.s runtime: fall back to /proc/self/auxv in Android libs 2016-11-29 15:27:53 +00:00
rt0_darwin_386.s
rt0_darwin_amd64.s runtime: align C library startup calls on amd64 2016-05-25 23:16:46 +00:00
rt0_darwin_arm64.s
rt0_darwin_arm.s runtime,runtime/cgo: save callee-saved FP register on arm 2016-05-25 06:54:28 +00:00
rt0_dragonfly_amd64.s
rt0_freebsd_386.s
rt0_freebsd_amd64.s
rt0_freebsd_arm.s
rt0_linux_386.s
rt0_linux_amd64.s runtime: make stack 16-byte aligned for external code in _rt0_amd64_linux_lib 2016-08-05 23:56:07 +00:00
rt0_linux_arm64.s
rt0_linux_arm.s runtime,runtime/cgo: save callee-saved FP register on arm 2016-05-25 06:54:28 +00:00
rt0_linux_mips64x.s cmd/link, runtime: add external linking support for linux/mips64x 2016-05-01 02:38:37 +00:00
rt0_linux_mipsx.s runtime: add cgo support for GOARCH=mips{,le} 2016-12-14 23:52:33 +00:00
rt0_linux_ppc64.s runtime, runtime/cgo: conform to PIC register use rules in ppc64 asm 2015-10-18 23:36:39 +00:00
rt0_linux_ppc64le.s runtime: add library startup support for ppc64le 2016-05-26 03:31:59 +00:00
rt0_linux_s390x.s runtime: add s390x support (new files and lfstack_64bit.go modifications) 2016-04-07 18:56:54 +00:00
rt0_nacl_386.s
rt0_nacl_amd64p32.s
rt0_nacl_arm.s
rt0_netbsd_386.s
rt0_netbsd_amd64.s
rt0_netbsd_arm.s
rt0_openbsd_386.s
rt0_openbsd_amd64.s build: move package sources from src/pkg to src 2014-09-08 00:08:51 -04:00
rt0_openbsd_arm.s runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
rt0_plan9_386.s
rt0_plan9_amd64.s
rt0_plan9_arm.s runtime: new files for plan9_arm support 2016-03-07 16:25:48 +00:00
rt0_solaris_amd64.s
rt0_windows_386.s cmd/go: fix -buildmode=c-archive should work on windows 2016-04-04 03:38:25 +00:00
rt0_windows_amd64.s cmd/go: fix -buildmode=c-archive should work on windows 2016-04-04 03:38:25 +00:00
runtime1.go runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
runtime2.go runtime: do not allocate on every time.Sleep 2017-02-24 15:34:01 +00:00
runtime_linux_test.go
runtime_mmap_test.go runtime: fetch physical page size from the OS 2016-09-06 21:05:50 +00:00
runtime_test.go runtime: check that Version does not contain \r \n 2016-12-05 16:49:53 +00:00
runtime_unix_test.go
runtime-gdb_test.go runtime: skip flaky TestGdbPythonCgo on MIPS 2017-02-02 21:45:42 +00:00
runtime-gdb.py runtime: set $sp before $pc in gdb python script 2016-06-09 20:02:59 +00:00
runtime-lldb_test.go cmd/link: put text at address 0x1000000 on darwin/amd64 2016-10-28 20:17:53 +00:00
runtime.go syscall: make Getpagesize return page size from runtime 2016-09-06 21:05:55 +00:00
select.go runtime: speed up fastrand() % n 2017-02-14 00:01:22 +00:00
sema.go sync: make Mutex more fair 2017-02-17 17:24:59 +00:00
sigaction_linux.go runtime/cgo: use libc for sigaction syscalls when possible 2016-11-16 05:38:38 +00:00
signal_386.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_amd64x.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_arm64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_arm.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_darwin_386.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_darwin_amd64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_darwin_arm64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_darwin_arm.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_darwin.go runtime: unify sigtrampgo 2016-09-26 17:22:42 +00:00
signal_dragonfly_amd64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_dragonfly.go runtime: don't always unblock all signals on dragonfly, freebsd and openbsd 2016-04-15 21:20:45 +00:00
signal_freebsd_386.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_freebsd_amd64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_freebsd_arm.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_freebsd.go runtime: unify sigtrampgo 2016-09-26 17:22:42 +00:00
signal_linux_386.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_linux_amd64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_linux_arm64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_linux_arm.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_linux_mips64x.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_linux_mipsx.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
signal_linux_ppc64x.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_linux_s390x.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_mips64x.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_mipsx.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
signal_nacl_386.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_nacl_amd64p32.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_nacl_arm.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_nacl.go
signal_netbsd_386.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_netbsd_amd64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_netbsd_arm.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_netbsd.go
signal_openbsd_386.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_openbsd_amd64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_openbsd_arm.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_openbsd.go runtime: unify sigtrampgo 2016-09-26 17:22:42 +00:00
signal_plan9.go
signal_ppc64x.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_sighandler.go runtime: print sigcode on signal crash 2016-10-27 17:46:01 +00:00
signal_solaris_amd64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_solaris.go runtime: treat SIGSTOP on Solaris as we do on other systems 2016-11-01 20:02:40 +00:00
signal_unix.go runtime: remove g.stackAlloc 2017-02-14 15:52:56 +00:00
signal_windows.go runtime: minor simplifications to signal code 2016-09-28 13:12:47 +00:00
sigqueue_plan9.go
sigqueue.go
sigtab_linux_generic.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
sigtab_linux_mipsx.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
sizeclasses.go runtime: add table of size classes in a comment 2017-01-08 00:01:30 +00:00
slice.go runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
softfloat64_test.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
softfloat64.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
softfloat_arm.go [dev.ssa] cmd/internal/obj, etc.: add and use NEGF, NEGD instructions on ARM 2016-07-20 18:15:37 +00:00
sqrt_test.go runtime: copy sqrt normalization bugfix from math 2015-10-23 23:43:47 +00:00
sqrt.go
stack_test.go runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
stack.go runtime: remove g.stackAlloc 2017-02-14 15:52:56 +00:00
string_test.go runtime: improve atoi implementation 2016-11-01 14:04:39 +00:00
string.go runtime: improve atoi implementation 2016-11-01 14:04:39 +00:00
stubs2.go
stubs32.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
stubs_android.go runtime: add syscalls needed for android/amd64 logging. 2015-10-20 16:56:58 +00:00
stubs_asm.go all: fix assembly vet issues 2016-08-25 18:52:31 +00:00
stubs.go runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
symtab_test.go
symtab.go cmd/internal/obj, runtime: update funcdata comments 2017-02-27 22:29:28 +00:00
sys_arm64.go runtime, cmd/internal/obj: get rid of rewindmorestack 2016-10-05 18:19:46 +00:00
sys_arm.go runtime, cmd/internal/obj: get rid of rewindmorestack 2016-10-05 18:19:46 +00:00
sys_darwin_386.s time: optimize Now on darwin, windows 2017-02-09 14:45:16 +00:00
sys_darwin_amd64.s time: optimize Now on darwin, windows 2017-02-09 14:45:16 +00:00
sys_darwin_arm64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_darwin_arm.s runtime: update assembly var names after monotonic time changes 2017-02-21 18:42:05 +00:00
sys_dragonfly_amd64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_freebsd_386.s runtime: fix some assembly offset names 2017-02-14 02:09:48 +00:00
sys_freebsd_amd64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_freebsd_arm.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_linux_386.s runtime: update assembly var names after monotonic time changes 2017-02-21 18:42:05 +00:00
sys_linux_amd64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_linux_arm64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_linux_arm.s runtime: fix some assembly offset names 2017-02-14 02:09:48 +00:00
sys_linux_mips64x.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_linux_mipsx.s runtime: use standard linux/mipsx clone variable names 2017-02-21 18:42:38 +00:00
sys_linux_ppc64x.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_linux_s390x.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_mips64x.go runtime, cmd/internal/obj: get rid of rewindmorestack 2016-10-05 18:19:46 +00:00
sys_mipsx.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
sys_nacl_386.s runtime: fix some assembly offset names 2017-02-14 02:09:48 +00:00
sys_nacl_amd64p32.s runtime: fix some assembly offset names 2017-02-14 02:09:48 +00:00
sys_nacl_arm.s runtime: fix some assembly offset names 2017-02-14 02:09:48 +00:00
sys_netbsd_386.s runtime: update assembly var names after monotonic time changes 2017-02-21 18:42:05 +00:00
sys_netbsd_amd64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_netbsd_arm.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_nonppc64x.go
sys_openbsd_386.s runtime: fix some assembly offset names 2017-02-14 02:09:48 +00:00
sys_openbsd_amd64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_openbsd_arm.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_plan9_386.s runtime: fix some assembly offset names 2017-02-14 02:09:48 +00:00
sys_plan9_amd64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_plan9_arm.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_ppc64x.go runtime, cmd/internal/obj: get rid of rewindmorestack 2016-10-05 18:19:46 +00:00
sys_s390x.go runtime, cmd/internal/obj: get rid of rewindmorestack 2016-10-05 18:19:46 +00:00
sys_solaris_amd64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_windows_386.s runtime: update assembly var names after monotonic time changes 2017-02-21 18:42:05 +00:00
sys_windows_amd64.s time: optimize Now on darwin, windows 2017-02-09 14:45:16 +00:00
sys_x86.go runtime, cmd/internal/obj: get rid of rewindmorestack 2016-10-05 18:19:46 +00:00
syscall2_solaris.go
syscall_nacl.h
syscall_solaris.go
syscall_windows_test.go runtime: pass windows float syscall args via XMM 2016-10-28 13:13:08 +00:00
syscall_windows.go runtime, syscall: only search for Windows DLLs in the System32 directory 2016-04-01 22:55:36 +00:00
textflag.h
time.go runtime: do not allocate on every time.Sleep 2017-02-24 15:34:01 +00:00
timeasm.go time: optimize Now on darwin, windows 2017-02-09 14:45:16 +00:00
timestub.go time: optimize Now on darwin, windows 2017-02-09 14:45:16 +00:00
tls_arm64.h runtime: set TLSG_IS_VARIABLE for android/arm64. 2015-12-02 22:00:04 +00:00
tls_arm64.s cmd/internal/obj, cmd/link, runtime: native-ish support for tls on arm64 2015-10-28 19:51:05 +00:00
tls_arm.s
tls_mips64x.s runtime: add linux/mips64x cgo support 2016-05-04 16:41:10 +00:00
tls_mipsx.s runtime: add cgo support for GOARCH=mips{,le} 2016-12-14 23:52:33 +00:00
tls_ppc64x.s all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
tls_s390x.s runtime: add s390x support (new files and lfstack_64bit.go modifications) 2016-04-07 18:56:54 +00:00
trace.go sync: make Mutex more fair 2017-02-17 17:24:59 +00:00
traceback.go runtime: remove stack barriers 2017-02-14 15:52:54 +00:00
type.go [dev.typealias] cmd/compile, reflect: fix struct field names for embedded byte, rune 2017-01-25 18:57:20 +00:00
typekind.go
unaligned1.go runtime: add s390x support (modified files only) 2016-04-06 04:25:06 +00:00
unaligned2.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
utf8.go runtime: speed up non-ASCII rune decoding 2016-10-17 11:25:22 +00:00
vdso_linux_amd64.go runtime: common handling of _AT_RANDOM auxv 2016-04-16 21:42:31 +00:00
vdso_none.go runtime: os.Executable runtime support for Darwin 2016-11-07 20:18:36 +00:00
vlop_386.s all: fix obsolete inferno-os links 2016-08-29 04:54:42 +00:00
vlop_arm_test.go runtime: arm5, fix large-offset floating-point stores 2016-04-25 22:33:33 +00:00
vlop_arm.s cmd/link: insert trampolines for too-far jumps on ARM 2016-10-11 13:35:33 +00:00
vlrt.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
wincallback.go
write_err_android.go runtime: update android time_now call 2017-02-08 02:56:25 +00:00
write_err.go runtime: change odd 'print1_write' file names 2015-10-20 23:03:06 +00:00
zcallback_windows.go runtime: use go generate for zcallback_windows.go 2014-12-19 02:45:40 +00:00
zcallback_windows.s