1
0
mirror of https://github.com/golang/go synced 2024-11-20 01:04:40 -07:00
go/src/runtime
Austin Clements 608c1b0d56 runtime: scan objects with finalizers concurrently
This reduces pause time by ~25% relative to tip and by ~50% relative
to Go 1.5.1.

Currently one of the steps of STW mark termination is to loop (in
parallel) over all spans to find objects with finalizers in order to
mark all objects reachable from these objects and to treat the
finalizer special as a root. Unfortunately, even if there are no
finalizers at all, this loop takes roughly 1 ms/heap GB/core, so
multi-gigabyte heaps can quickly push our STW time past 10ms.

Fix this by moving this scan from mark termination to concurrent scan,
where it can run in parallel with mutators. The loop itself could also
be optimized, but this cost is small compared to concurrent marking.

Making this scan concurrent introduces two complications:

1) The scan currently walks the specials list of each span without
locking it, which is safe only with the world stopped. We fix this by
speculatively checking if a span has any specials (the vast majority
won't) and then locking the specials list only if there are specials
to check.

2) An object can have a finalizer set after concurrent scan, in which
case it won't have been marked appropriately by concurrent scan. If
the finalizer is a closure and is only reachable from the special, it
could be swept before it is run. Likewise, if the object is not marked
yet when the finalizer is set and then becomes unreachable before it
is marked, other objects reachable only from it may be swept before
the finalizer function is run. We fix this issue by making
addfinalizer ensure the same marking invariants as markroot does.

For multi-gigabyte heaps, this reduces max pause time by 20%–30%
relative to tip (depending on GOMAXPROCS) and by ~50% relative to Go
1.5.1 (where this loop was neither concurrent nor parallel). Here are
the results for the garbage benchmark:

               ---------------- max pause ----------------
Heap   Procs   Concurrent scan   STW parallel scan   1.5.1
24GB     12         18ms              23ms            37ms
24GB      4         18ms              25ms            37ms
 4GB      4         3.8ms            4.9ms           6.9ms

In all cases, 95%ile pause time is similar to the max pause time. This
also improves mean STW time by 10%–30%.

Fixes #11485.

Change-Id: I9359d8c3d120a51d23d924b52bf853a1299b1dfd
Reviewed-on: https://go-review.googlesource.com/14982
Reviewed-by: Rick Hudson <rlh@golang.org>
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-10-02 19:55:48 +00:00
..
cgo runtime, runtime/cgo: support using msan on cgo code 2015-09-30 22:17:55 +00:00
debug runtime/debug: more explicit Stack docs 2015-09-16 22:25:11 +00:00
pprof runtime/pprof: document content of heap profile 2015-07-27 16:30:27 +00:00
race runtime: race instrument read of convT2E/I arg 2015-09-19 10:26:36 +00:00
trace runtime/trace: reduce memory usage for trace stress tests on openbsd/arm 2015-10-01 18:00:55 +00:00
alg.go reflect: implement ArrayOf 2015-04-21 15:21:09 +00:00
append_test.go
arch_386.go runtime: move arch1_$GOARCH.go into arch_$GOARCH.go 2015-09-10 04:52:24 +00:00
arch_amd64.go runtime: move arch1_$GOARCH.go into arch_$GOARCH.go 2015-09-10 04:52:24 +00:00
arch_amd64p32.go runtime: move arch1_$GOARCH.go into arch_$GOARCH.go 2015-09-10 04:52:24 +00:00
arch_arm64.go runtime: move arch1_$GOARCH.go into arch_$GOARCH.go 2015-09-10 04:52:24 +00:00
arch_arm.go runtime: move arch1_$GOARCH.go into arch_$GOARCH.go 2015-09-10 04:52:24 +00:00
arch_ppc64.go runtime: move arch1_$GOARCH.go into arch_$GOARCH.go 2015-09-10 04:52:24 +00:00
arch_ppc64le.go runtime: move arch1_$GOARCH.go into arch_$GOARCH.go 2015-09-10 04:52:24 +00:00
asm_386.s runtime: fix aeshash of empty string 2015-09-15 17:51:23 +00:00
asm_amd64.s runtime: fix aeshash of empty string 2015-09-15 17:51:23 +00:00
asm_amd64p32.s runtime: don't install a stack barrier in cgocallback_gofunc's frame 2015-08-30 16:06:47 +00:00
asm_arm64.s runtime: fixes for arm64 shared libraries 2015-09-03 01:07:40 +00:00
asm_arm.s runtime: add stub sigreturn on arm 2015-09-07 07:49:09 +00:00
asm_ppc64x.s runtime: implement cmpstring and bytes.Compare in assembly for ppc64 2015-08-31 18:41:58 +00:00
asm.s
atomic_386.go runtime: remove unused xchgp/xchgp1 2015-08-27 00:28:35 +00:00
atomic_amd64x.go runtime: remove unused xchgp/xchgp1 2015-08-27 00:28:35 +00:00
atomic_arm64.go runtime: remove unused xchgp/xchgp1 2015-08-27 00:28:35 +00:00
atomic_arm64.s runtime: ensure GC sees type-safe memory on weak machines 2015-06-19 15:29:50 +00:00
atomic_arm.go runtime: remove unused xchgp/xchgp1 2015-08-27 00:28:35 +00:00
atomic_pointer.go runtime: remove unused xchgp/xchgp1 2015-08-27 00:28:35 +00:00
atomic_ppc64x.go runtime: remove unused xchgp/xchgp1 2015-08-27 00:28:35 +00:00
atomic_ppc64x.s runtime: ensure GC sees type-safe memory on weak machines 2015-06-19 15:29:50 +00:00
atomic_test.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
cgo_mmap.go runtime, runtime/cgo: support using msan on cgo code 2015-09-30 22:17:55 +00:00
cgo.go cmd/cgo: make sure pointers passed to C escape to heap 2015-06-15 17:39:53 +00:00
cgocall.go runtime: store syscall parameters in m not on stack 2015-06-29 02:45:45 +00:00
cgocallback.go runtime: delete cgo_allocate 2015-04-17 01:30:47 +00:00
chan_test.go runtime: fix data race in BenchmarkChanPopular 2015-06-02 11:16:01 +00:00
chan.go runtime: add memory barrier for sync send in select 2015-07-13 19:10:22 +00:00
chanbarrier_test.go runtime: fix race in TestChanSendBarrier 2015-07-13 19:42:20 +00:00
closure_test.go
compiler.go Fix several out of date references to 4g/5g/6g/8g/9g. 2015-06-26 03:38:21 +00:00
complex_test.go
complex.go
cpuprof.go runtime: merge slice and sliceStruct 2015-04-15 16:59:49 +00:00
cputicks.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
crash_cgo_test.go runtime: reduce pthread stack size in TestCgoCallbackGC 2015-09-13 23:46:55 +00:00
crash_test.go runtime: remove flaky TestInvalidptrCrash to fix build 2015-09-19 01:43:00 +00:00
crash_unix_test.go runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
debug.go runtime: clarify that NumCPU returns only available CPUs 2015-07-10 21:28:49 +00:00
defs1_linux.go build: merge the great pkg/ rename into dev.power64 2014-10-22 13:25:37 -04:00
defs1_netbsd_386.go
defs1_netbsd_amd64.go
defs1_netbsd_arm.go
defs1_solaris_amd64.go
defs2_linux.go
defs3_linux.go
defs_arm_linux.go build: move package sources from src/pkg to src 2014-09-08 00:08:51 -04:00
defs_darwin_386.go runtime: use uintXX instead of *byte for si_addr on Darwin 2015-03-26 16:20:32 +00:00
defs_darwin_amd64.go runtime: use uintXX instead of *byte for si_addr on Darwin 2015-03-26 16:20:32 +00:00
defs_darwin_arm64.go runtime: darwin/arm64 support 2015-04-16 13:01:19 +00:00
defs_darwin_arm.go runtime: use uintXX instead of *byte for si_addr on Darwin 2015-03-26 16:20:32 +00:00
defs_darwin.go
defs_dragonfly_amd64.go
defs_dragonfly.go all: remove dragonfly/386 port 2015-03-14 10:47:19 +00:00
defs_freebsd_386.go
defs_freebsd_amd64.go
defs_freebsd_arm.go
defs_freebsd.go
defs_linux_386.go src/runtime: Add missing defs for android/386. 2015-08-27 15:14:41 +00:00
defs_linux_amd64.go runtime: mark pages we return to kernel as NOHUGEPAGE 2015-02-25 21:16:18 +00:00
defs_linux_arm64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
defs_linux_arm.go runtime: mark pages we return to kernel as NOHUGEPAGE 2015-02-25 21:16:18 +00:00
defs_linux_ppc64.go runtime: mark pages we return to kernel as NOHUGEPAGE 2015-02-25 21:16:18 +00:00
defs_linux_ppc64le.go runtime: mark pages we return to kernel as NOHUGEPAGE 2015-02-25 21:16:18 +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 build: move package sources from src/pkg to src 2014-09-08 00:08:51 -04:00
defs_netbsd.go
defs_openbsd_386.go
defs_openbsd_amd64.go [dev.cc] runtime: change set_sec to take int64 2014-11-14 14:50:00 -05:00
defs_openbsd_arm.go runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
defs_openbsd.go build: move package sources from src/pkg to src 2014-09-08 00:08:51 -04:00
defs_plan9_386.go
defs_plan9_amd64.go
defs_solaris_amd64.go
defs_solaris.go
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 runtime: use (*context) ip, setip, sp and setsp everywhere on windows 2015-04-09 00:57:28 +00:00
defs_windows.go
duff_386.s runtime: auto-generate duff routines 2015-04-02 02:37:59 +00:00
duff_amd64.s runtime: optimize duffcopy on amd64 2015-09-22 15:02:37 +00:00
duff_arm64.s runtime: auto-generate duff routines 2015-04-02 02:37:59 +00:00
duff_arm.s runtime: auto-generate duff routines 2015-04-02 02:37:59 +00:00
duff_ppc64x.s all: use RET instead of RETURN on ppc64 2015-06-06 00:07:23 +00:00
env_plan9.go runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
env_posix.go runtime: rename cgocall_errno and asmcgocall_errno into cgocall and asmcgocall 2015-06-19 01:47:11 +00:00
env_test.go runtime: fix TestFixedGOROOT to properly restore the GOROOT env var after test 2015-06-03 23:33:48 +00:00
error.go cmd/internal/gc: inline x := y.(*T) and x, ok := y.(*T) 2015-03-20 20:05:37 +00:00
export_arm_test.go runtime: replace divide with multiply in runtime.usleep on arm 2015-07-30 15:48:29 +00:00
export_futex_test.go build: move package sources from src/pkg to src 2014-09-08 00:08:51 -04:00
export_linux_test.go runtime: merge clone0 and clone 2015-04-22 16:28:57 +00:00
export_test.go runtime: test that periodic GC works 2015-09-30 19:24:07 +00:00
export_windows_test.go runtime: test that timeBeginPeriod succeeds 2015-09-23 09:01:08 +00:00
extern.go runtime: add GODEBUG for stack barriers at every frame 2015-08-30 16:06:55 +00:00
funcdata.h runtime: remove unused FUNCDATA_DeadValueMaps 2015-09-07 21:02:11 +00:00
futex_test.go
gc_test.go runtime: test that periodic GC works 2015-09-30 19:24:07 +00:00
gcinfo_test.go runtime: test and fix heap bitmap for 1-pointer allocation on 32-bit system 2015-05-15 18:47:00 +00:00
gengoos.go
go_tls.h
hash32.go
hash64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
hash_test.go runtime: fix aeshash of empty string 2015-09-15 17:51:23 +00:00
hashmap_fast.go cmd/compile, runtime: stop returning t.zero on hashmap miss 2015-08-26 00:03:21 +00:00
hashmap.go runtime: on map update, don't overwrite key if we don't need to. 2015-09-09 21:06:49 +00:00
heapdump.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
iface_test.go cmd/gc: allocate backing storage for non-escaping interfaces on stack 2015-03-30 16:11:22 +00:00
iface.go runtime: race instrument read of convT2E/I arg 2015-09-19 10:26:36 +00:00
lfstack_32bit.go
lfstack_amd64.go
lfstack_darwin_arm64.go runtime: darwin/arm64 support 2015-04-16 13:01:19 +00:00
lfstack_linux_arm64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
lfstack_linux_ppc64x.go
lfstack_test.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
lfstack.go
lock_futex.go runtime: make notetsleep_internal nowritebarrier 2015-07-27 19:58:58 +00:00
lock_sema.go runtime: fix writebarrier throw in lock_sema 2015-03-17 19:20:11 +00:00
Makefile
malloc_test.go runtime: fix MemStats.{PauseNS,PauseEnd,PauseTotalNS,LastGC} 2015-07-13 23:32:59 +00:00
malloc.go runtime: handle sysReserve failure in mHeap_SysAlloc 2015-10-01 14:40:02 +00:00
map_test.go
mapspeed_test.go cmd/gc: don't call memequal twice in generated type.eq routines 2015-02-26 00:34:29 +00:00
mbarrier.go runtime: fix go:nowritebarrier annotation on gcmarkwb_m 2015-07-15 21:06:13 +00:00
mbitmap.go runtime: fix offset in invalidptr panic message 2015-09-22 16:55:17 +00:00
mcache.go runtime: track "scannable" bytes of heap 2015-05-06 19:40:33 +00:00
mcentral.go runtime: make sweep proportional to spans bytes allocated 2015-08-04 18:54:44 +00:00
mem_bsd.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
mem_darwin.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
mem_linux.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
mem_plan9.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
mem_windows.go runtime: print errno and byte count before crashing in mem_windows.go 2015-09-17 07:06:42 +00:00
memclr_386.s
memclr_amd64.s [dev.power64] cmd/5a, cmd/6a, cmd/8a, cmd/9a: make labels function-scoped 2014-10-28 21:50:16 -04:00
memclr_arm64.s runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
memclr_arm.s
memclr_plan9_386.s
memclr_plan9_amd64.s
memclr_ppc64x.s runtime: adjust the ppc64x memmove and memclr to copy by word as much as it can 2015-10-02 07:50:52 +00:00
memmove_386.s
memmove_amd64.s
memmove_arm64.s runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
memmove_arm.s [dev.cc] all: edit assembly source for ARM to be more regular 2015-02-13 23:08:51 +00:00
memmove_linux_amd64_test.go
memmove_nacl_amd64p32.s build: move package sources from src/pkg to src 2014-09-08 00:08:51 -04:00
memmove_plan9_386.s
memmove_plan9_amd64.s
memmove_ppc64x.s runtime: adjust the ppc64x memmove and memclr to copy by word as much as it can 2015-10-02 07:50:52 +00:00
memmove_test.go cmd/6g, runtime: improve duffzero throughput 2015-04-15 19:17:07 +00:00
mfinal_test.go runtime: enable TestEmptySlice 2015-07-30 04:47:16 +00:00
mfinal.go cmd/internal/gc, runtime: use 1-bit bitmap for stack frames, data, bss 2015-05-01 18:44:36 +00:00
mfixalloc.go runtime,reflect,cmd/internal/gc: Fix comments referring to .c/.h files 2015-03-11 20:19:43 +00:00
mgc.go runtime: scan objects with finalizers concurrently 2015-10-02 19:55:48 +00:00
mgcmark.go runtime: scan objects with finalizers concurrently 2015-10-02 19:55:48 +00:00
mgcsweep.go runtime: simplify mSpan_Sweep 2015-09-14 18:29:58 +00:00
mgcwork.go runtime: fix out-of-date comment on gcWork usage 2015-10-02 19:55:34 +00:00
mheap.go runtime: scan objects with finalizers concurrently 2015-10-02 19:55:48 +00:00
mkduff.go runtime: optimize duffcopy on amd64 2015-09-22 15:02:37 +00:00
mknacl.sh
mmap.go runtime, runtime/cgo: support using msan on cgo code 2015-09-30 22:17:55 +00:00
mprof.go runtime: factor stoptheworld/starttheworld pattern 2015-05-18 14:55:25 +00:00
msize.go runtime: Speed up heapBitsForObject 2015-04-20 21:39:06 +00:00
mstats.go runtime: report GC CPU utilization in MemStats 2015-07-29 20:23:34 +00:00
mstkbar.go runtime: add high-level description of how stack barriers work 2015-09-09 01:18:56 +00:00
netpoll_epoll.go runtime: on unexpected netpoll error, throw instead of looping 2015-09-15 17:56:56 +00:00
netpoll_kqueue.go runtime: on unexpected netpoll error, throw instead of looping 2015-09-15 17:56:56 +00:00
netpoll_nacl.go
netpoll_solaris.go runtime: on unexpected netpoll error, throw instead of looping 2015-09-15 17:56:56 +00:00
netpoll_stub.go
netpoll_windows.go runtime: replace func-based write barrier skipping with type-based 2015-04-20 20:20:09 +00:00
netpoll.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
noasm.go runtime: implement cmpstring and bytes.Compare in assembly for ppc64 2015-08-31 18:41:58 +00:00
norace_linux_test.go runtime: re-enable TestNewProc0 on android/arm and fix heap corruption 2015-04-29 19:18:07 +00:00
norace_test.go
os1_darwin.go runtime: run on GOARM=5 and GOARM=6 uniprocessor freebsd/arm systems 2015-08-07 17:39:07 +00:00
os1_dragonfly.go runtime: if we don't handle a signal on a non-Go thread, raise it 2015-07-22 20:26:29 +00:00
os1_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
os1_linux.go runtime: pass a smaller buffer to sched_getaffinity on ARM 2015-07-27 01:04:10 +00:00
os1_nacl.go runtime: if we don't handle a signal on a non-Go thread, raise it 2015-07-22 20:26:29 +00:00
os1_netbsd_386.go [dev.cc] runtime: convert netbsd/386 port to Go 2014-11-22 22:09:11 +11:00
os1_netbsd_amd64.go
os1_netbsd.go runtime: if we don't handle a signal on a non-Go thread, raise it 2015-07-22 20:26:29 +00:00
os1_openbsd.go runtime: if we don't handle a signal on a non-Go thread, raise it 2015-07-22 20:26:29 +00:00
os1_plan9.go runtime: if we don't handle a signal on a non-Go thread, raise it 2015-07-22 20:26:29 +00:00
os1_windows.go runtime: test that timeBeginPeriod succeeds 2015-09-23 09:01:08 +00:00
os2_darwin.go [dev.cc] runtime: convert operating system support code from C to Go 2014-11-11 17:08:54 -05:00
os2_dragonfly.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_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_linux.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_netbsd.go
os2_openbsd.go
os2_plan9.go
os2_solaris.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_windows.go runtime: do not calculate asmstdcall address every time we make syscall 2015-04-09 04:26:44 +00:00
os3_plan9.go runtime: fix x86 stack trace for call to heap memory on Plan 9 2015-07-28 19:01:41 +00:00
os3_solaris.go runtime: don't define libc_getpid in os3_solaris.go 2015-07-28 14:07:17 +00:00
os_android_arm.go runtime: export main.main for android 2015-04-17 12:11:04 +00:00
os_darwin_arm64.go runtime: darwin/arm64 support 2015-04-16 13:01:19 +00:00
os_darwin_arm.go runtime: run on GOARM=5 and GOARM=6 uniprocessor freebsd/arm systems 2015-08-07 17:39:07 +00:00
os_darwin.go runtime: if we don't handle a signal on a non-Go thread, raise it 2015-07-22 20:26:29 +00:00
os_dragonfly.go runtime: drop sigfwd from signal forwarding unsupported platforms 2015-10-02 01:07:44 +00:00
os_freebsd_arm.go runtime: run on GOARM=5 and GOARM=6 uniprocessor freebsd/arm systems 2015-08-07 17:39:07 +00:00
os_freebsd.go runtime: drop sigfwd from signal forwarding unsupported platforms 2015-10-02 01:07:44 +00:00
os_linux_386.go
os_linux_arm64.go runtime: mark all runtime.cputicks implementations NOSPLIT 2015-04-15 09:22:15 +00:00
os_linux_arm.go runtime: run on GOARM=5 and GOARM=6 uniprocessor freebsd/arm systems 2015-08-07 17:39:07 +00:00
os_linux.go runtime: drop sigfwd from signal forwarding unsupported platforms 2015-10-02 01:07:44 +00:00
os_nacl_arm.go runtime: run on GOARM=5 and GOARM=6 uniprocessor freebsd/arm systems 2015-08-07 17:39:07 +00:00
os_nacl.go runtime: drop sigfwd from signal forwarding unsupported platforms 2015-10-02 01:07:44 +00:00
os_netbsd_arm.go runtime: run on GOARM=5 and GOARM=6 uniprocessor freebsd/arm systems 2015-08-07 17:39:07 +00:00
os_netbsd.go runtime: drop sigfwd from signal forwarding unsupported platforms 2015-10-02 01:07:44 +00:00
os_openbsd_arm.go runtime: run on GOARM=5 and GOARM=6 uniprocessor freebsd/arm systems 2015-08-07 17:39:07 +00:00
os_openbsd.go runtime: drop sigfwd from signal forwarding unsupported platforms 2015-10-02 01:07:44 +00:00
os_plan9.go runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
os_solaris.go runtime: drop sigfwd from signal forwarding unsupported platforms 2015-10-02 01:07:44 +00:00
os_windows.go runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
panic1.go runtime: unwind stack barriers when writing above the current frame 2015-06-07 17:57:47 +00:00
panic.go runtime: call goexit1 instead of goexit 2015-08-06 20:21:05 +00:00
parfor_test.go
parfor.go
print1_write_android.go [dev.cc] runtime: print to stderr as well as android logd 2015-02-20 18:30:09 +00:00
print1_write.go
print1.go runtime: merge slice and sliceStruct 2015-04-15 16:59:49 +00:00
proc1.go runtime: test that periodic GC works 2015-09-30 19:24:07 +00:00
proc_test.go runtime: disable TestGoroutineParallelism on uniprocessor 2015-07-22 18:53:12 +00:00
proc.go runtime: don't recheck heap trigger for periodic GC 2015-08-05 17:28:56 +00:00
race0.go
race1.go runtime, cmd/internal/ld: rename themoduledata to firstmoduledata 2015-04-10 05:11:49 +00:00
race_amd64.s
race.go
rdebug.go
rt0_android_arm.s runtime: shared library init support for android/arm. 2015-04-13 21:53:15 +00:00
rt0_darwin_386.s runtime: darwin/386 entrypoint for c-archive 2015-10-02 11:45:52 +00:00
rt0_darwin_amd64.s runtime: darwin/amd64 library entry point 2015-04-08 21:53:52 +00:00
rt0_darwin_arm64.s runtime: darwin/arm64 c-archive entry point 2015-04-16 18:56:54 +00:00
rt0_darwin_arm.s runtime: preserve R11 in darwin/arm entrypoint 2015-09-16 11:23:32 +00:00
rt0_dragonfly_amd64.s
rt0_freebsd_386.s
rt0_freebsd_amd64.s
rt0_freebsd_arm.s runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
rt0_linux_386.s runtime: merge clone0 and clone 2015-04-22 16:28:57 +00:00
rt0_linux_amd64.s runtime: deflake TestNewOSProc0, fix _rt0_amd64_linux_lib stack alignment 2015-04-23 23:09:03 +00:00
rt0_linux_arm64.s runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
rt0_linux_arm.s runtime: merge clone0 and clone 2015-04-22 16:28:57 +00:00
rt0_linux_ppc64.s
rt0_linux_ppc64le.s
rt0_nacl_386.s
rt0_nacl_amd64p32.s runtime: disable fake time on nacl 2014-10-27 20:47:15 -04:00
rt0_nacl_arm.s
rt0_netbsd_386.s
rt0_netbsd_amd64.s
rt0_netbsd_arm.s runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
rt0_openbsd_386.s build: move package sources from src/pkg to src 2014-09-08 00:08:51 -04:00
rt0_openbsd_amd64.s
rt0_openbsd_arm.s runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
rt0_plan9_386.s runtime: more NOPTR 2014-09-24 19:04:06 -04:00
rt0_plan9_amd64.s
rt0_solaris_amd64.s
rt0_windows_386.s runtime: use _main instead of main on windows/386 2015-03-24 03:23:03 +00:00
rt0_windows_amd64.s
rune.go runtime,reflect,cmd/internal/gc: Fix comments referring to .c/.h files 2015-03-11 20:19:43 +00:00
runtime1.go runtime: add GODEBUG for stack barriers at every frame 2015-08-30 16:06:55 +00:00
runtime2.go runtime: remove unused g.readyg field 2015-09-14 18:40:22 +00:00
runtime_linux_test.go
runtime_test.go runtime: reduce slice growth during append to 2x 2015-06-26 17:49:33 +00:00
runtime_unix_test.go runtime: multi-threaded, utilization-scheduled background mark 2015-04-21 15:35:32 +00:00
runtime-gdb_test.go runtime: require gdb version 7.9 for gdb test 2015-07-24 17:15:44 +00:00
runtime-gdb.py runtime: Fix GDB integration with Python 2 2015-04-10 22:17:59 +00:00
runtime.go runtime: auto-generate duff routines 2015-04-02 02:37:59 +00:00
select.go runtime: add memory barrier for sync send in select 2015-07-13 19:10:22 +00:00
sema.go runtime: remove runtime frames from stacks in traces 2015-03-10 14:46:15 +00:00
signal1_unix.go runtime: drop sigfwd from signal forwarding unsupported platforms 2015-10-02 01:07:44 +00:00
signal2_unix.go runtime: drop sigfwd from signal forwarding unsupported platforms 2015-10-02 01:07:44 +00:00
signal_386.go runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
signal_amd64x.go runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
signal_arm64.go runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
signal_arm.go runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
signal_darwin_386.go runtime: use uintXX instead of *byte for si_addr on Darwin 2015-03-26 16:20:32 +00:00
signal_darwin_amd64.go runtime: use uintXX instead of *byte for si_addr on Darwin 2015-03-26 16:20:32 +00:00
signal_darwin_arm64.go runtime: darwin/arm64 support 2015-04-16 13:01:19 +00:00
signal_darwin_arm.go runtime: use uintXX instead of *byte for si_addr on Darwin 2015-03-26 16:20:32 +00:00
signal_darwin.go runtime: drop sigfwd from signal forwarding unsupported platforms 2015-10-02 01:07:44 +00:00
signal_dragonfly_amd64.go
signal_dragonfly.go
signal_freebsd_386.go
signal_freebsd_amd64.go
signal_freebsd_arm.go [dev.cc] runtime: convert freebsd to Go 2014-11-11 23:00:29 -05:00
signal_freebsd.go
signal_linux_386.go
signal_linux_amd64.go
signal_linux_arm64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
signal_linux_arm.go
signal_linux_ppc64x.go
signal_linux.go runtime: unblock special glibc signals on each thread 2015-09-14 21:59:54 +00:00
signal_nacl_386.go
signal_nacl_amd64p32.go
signal_nacl_arm.go
signal_nacl.go [dev.cc] runtime: convert nacl support to Go 2014-11-21 10:22:18 -05:00
signal_netbsd_386.go
signal_netbsd_amd64.go
signal_netbsd_arm.go
signal_netbsd.go runtime: don't always unblock all signals 2015-05-22 20:24:08 +00:00
signal_openbsd_386.go
signal_openbsd_amd64.go [dev.cc] runtime: convert openbsd/amd64 port to Go 2014-11-14 13:01:12 +11:00
signal_openbsd_arm.go runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
signal_openbsd.go
signal_plan9.go
signal_ppc64x.go runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
signal_solaris_amd64.go
signal_solaris.go all: use one 'l' when cancelling everywhere except Solaris 2015-09-11 18:31:51 +00:00
signal_unix.go runtime: drop sigfwd from signal forwarding unsupported platforms 2015-10-02 01:07:44 +00:00
signal_windows.go runtime: if we don't handle a signal on a non-Go thread, raise it 2015-07-22 20:26:29 +00:00
sigpanic_unix.go runtime/cgo: catch EXC_BAD_ACCESS on darwin/arm 2015-03-17 12:12:48 +00:00
sigqueue_plan9.go runtime: fix signal handling on Plan 9 2015-05-12 16:35:46 +00:00
sigqueue.go runtime: remove always false comparison in sigsend 2015-08-26 01:02:55 +00:00
slice.go runtime: reduce slice growth during append to 2x 2015-06-26 17:49:33 +00:00
softfloat64_test.go
softfloat64.go runtime: slightly clean up softfloat code 2015-06-26 17:51:22 +00:00
softfloat_arm.go runtime: teach softfloat interpreter about "add r11, pc, r11" 2015-09-04 06:43:35 +00:00
sqrt_test.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
sqrt.go runtime: fix software FP regs corruption when emulating SQRT on ARM 2015-05-05 07:32:58 +00:00
stack1.go runtime: check explicitly for short unwinding of stacks 2015-08-28 16:05:59 +00:00
stack2.go cmd/dist, runtime: Make stack guard larger for non-optimized builds 2015-05-01 15:41:55 +00:00
stack_test.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
string1.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
string_test.go
string.go runtime: merge slice and sliceStruct 2015-04-15 16:59:49 +00:00
stubs2.go runtime, runtime/cgo: support using msan on cgo code 2015-09-30 22:17:55 +00:00
stubs32.go cmd/compile: define func value symbols at declaration 2015-07-20 00:50:46 +00:00
stubs_android.go runtime: support panic/print logging in android-L. 2015-02-04 21:02:41 +00:00
stubs.go runtime: call goexit1 instead of goexit 2015-08-06 20:21:05 +00:00
symtab_test.go cmd/compile: initialize line number properly for temporaries 2015-07-07 21:30:59 +00:00
symtab.go runtime: remove unused FUNCDATA_DeadValueMaps 2015-09-07 21:02:11 +00:00
sys_arm64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
sys_arm.go runtime: replace divide with multiply in runtime.usleep on arm 2015-07-30 15:48:29 +00:00
sys_darwin_386.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_darwin_amd64.s runtime: signal forwarding for darwin/amd64 2015-04-26 13:46:13 +00:00
sys_darwin_arm64.s runtime: fix darwin/amd64 assembly frame sizes 2015-07-29 22:26:02 +00:00
sys_darwin_arm.s runtime: replace divide with multiply in runtime.usleep on arm 2015-07-30 15:48:29 +00:00
sys_dragonfly_amd64.s runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
sys_freebsd_386.s runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
sys_freebsd_amd64.s runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
sys_freebsd_arm.s runtime: replace divide with multiply in runtime.usleep on arm 2015-07-30 15:48:29 +00:00
sys_linux_386.s runtime: set m.procid always on Linux 2015-06-24 21:50:39 +00:00
sys_linux_amd64.s runtime, runtime/cgo: support using msan on cgo code 2015-09-30 22:17:55 +00:00
sys_linux_arm64.s runtime, reflect: use correctly aligned stack frame sizes on arm64 2015-07-29 21:35:35 +00:00
sys_linux_arm.s runtime: replace divide with multiply in runtime.usleep on arm 2015-07-30 15:48:29 +00:00
sys_linux_ppc64x.s runtime: set m.procid always on Linux 2015-06-24 21:50:39 +00:00
sys_nacl_386.s all: fix misprints in comments 2015-06-11 14:18:57 +00:00
sys_nacl_amd64p32.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_nacl_arm.s runtime: ensure GC sees type-safe memory on weak machines 2015-06-19 15:29:50 +00:00
sys_netbsd_386.s runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
sys_netbsd_amd64.s runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
sys_netbsd_arm.s runtime: replace divide with multiply in runtime.usleep on arm 2015-07-30 15:48:29 +00:00
sys_openbsd_386.s runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
sys_openbsd_amd64.s runtime: log all thread stack traces during GODEBUG=crash on Unix 2015-07-27 16:58:53 +00:00
sys_openbsd_arm.s runtime: replace divide with multiply in runtime.usleep on arm 2015-07-30 15:48:29 +00:00
sys_plan9_386.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_plan9_amd64.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_ppc64x.go
sys_solaris_amd64.s runtime: always load address of libcFunc on Solaris 2015-05-06 11:36:57 +00:00
sys_windows_386.s runtime: really pass return value to Windows in externalthreadhandler 2015-04-15 05:03:42 +00:00
sys_windows_amd64.s runtime: provide room for first 4 syscall parameters in windows usleep2 2015-09-15 01:12:32 +00:00
sys_x86.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
syscall2_solaris.go runtime, syscall: remove unused bits from Solaris implementation 2015-08-21 11:39:24 +00:00
syscall_nacl.h runtime, syscall: use the new get_random_bytes syscall for NaCl 2015-03-25 02:07:09 +00:00
syscall_solaris.go runtime: rename cgocall_errno and asmcgocall_errno into cgocall and asmcgocall 2015-06-19 01:47:11 +00:00
syscall_windows_test.go runtime: test that timeBeginPeriod succeeds 2015-09-23 09:01:08 +00:00
syscall_windows.go runtime: store syscall parameters in m not on stack 2015-06-29 02:45:45 +00:00
textflag.h cmd/internal/obj: some platform independent bits of proper toolchain support for thread local storage 2015-09-03 14:06:07 +00:00
time.go runtime: remove runtime frames from stacks in traces 2015-03-10 14:46:15 +00:00
tls_arm64.h runtime: darwin/arm64 support 2015-04-16 13:01:19 +00:00
tls_arm64.s runtime: darwin/arm64 support 2015-04-16 13:01:19 +00:00
tls_arm.s cmd/internal/obj, cmd/link, runtime: a saner model for TLS on arm 2015-09-10 19:49:13 +00:00
tls_ppc64x.s cmd/cgo, runtime/cgo: support ppc64 2015-01-07 20:36:27 +00:00
trace.go runtime/trace: fix tracing of blocking system calls 2015-09-17 09:06:20 +00:00
traceback.go runtime: don't install a stack barrier in cgocallback_gofunc's frame 2015-08-30 16:06:47 +00:00
type.go runtime: on map update, don't overwrite key if we don't need to. 2015-09-09 21:06:49 +00:00
typekind1.go
typekind.go
unaligned1.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
unaligned2.go
vdso_linux_amd64.go
vdso_none.go
vlop_386.s
vlop_arm_test.go runtime: replace divide with multiply in runtime.usleep on arm 2015-07-30 15:48:29 +00:00
vlop_arm.s runtime: change arm software div/mod call sequence not to modify stack 2015-07-30 16:14:05 +00:00
vlrt.go
wbfat_gen.go runtime: change unused argument in fat write barriers from pointer to scalar 2015-04-28 01:37:45 +00:00
wbfat.go runtime: change unused argument in fat write barriers from pointer to scalar 2015-04-28 01:37:45 +00:00
wincallback.go
zcallback_windows.go
zcallback_windows.s
zgoarch_386.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoarch_amd64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoarch_amd64p32.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoarch_arm64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoarch_arm.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoarch_ppc64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoarch_ppc64le.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoos_android.go
zgoos_darwin.go
zgoos_dragonfly.go
zgoos_freebsd.go
zgoos_linux.go
zgoos_nacl.go
zgoos_netbsd.go
zgoos_openbsd.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
zgoos_plan9.go
zgoos_solaris.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
zgoos_windows.go