gcc/libgo/go/runtime
Ian Lance Taylor ea5ac5a69b compiler,runtime: pass old slice's ptr/len/cap by value to growslice
In the C calling convention, on AMD64, and probably a number of
    other architectures, a 3-word struct argument is passed on stack.
    This is less efficient than passing in three registers. Further,
    this may affect the code generation in other part of the program,
    even if the function is not actually called.
    
    Slices are common in Go and append is a common slice operation,
    which calls growslice in the growing path. To improve the code
    generation, pass the slice header's three fields as separate
    values, instead of a struct, to growslice.
    
    The drawback is that this makes the runtime implementation
    slightly diverges from the gc runtime.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/168277

From-SVN: r269811
2019-03-19 18:42:43 +00:00
..
debug libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
internal libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
msan libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
pprof re PR go/89172 (FAIL: runtime/pprof) 2019-02-27 22:35:10 +00:00
testdata libgo: update to Go 1.12.1 2019-03-18 20:27:59 +00:00
trace libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
alg.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
atomic_pointer.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
auxv_none.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
callers_test.go libgo: update to go1.7rc3 2016-07-22 18:15:38 +00:00
cgo_gccgo.go runtime: abort stack scan in cases that we cannot unwind the stack 2019-02-19 15:32:34 +00:00
cgocall.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
cgocheck.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
chan_test.go libgo: update to Go1.10beta1 2018-01-09 01:23:08 +00:00
chan.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
chanbarrier_test.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
closure_test.go
compiler.go libgo: update to go1.7rc3 2016-07-22 18:15:38 +00:00
complex_test.go
cpuprof.go compiler: improve name mangling for packpaths 2018-10-25 22:18:08 +00:00
cputicks.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
crash_cgo_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
crash_gccgo_test.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
crash_nonunix_test.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
crash_test.go libgo: update to Go 1.12 release 2019-02-26 15:38:12 +00:00
crash_unix_test.go libgo: add hurd build tags to test files 2019-02-01 22:11:50 +00:00
debug_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
debug.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
env_posix.go libgo: add hurd build tags 2019-02-01 21:57:36 +00:00
env_test.go
error.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
example_test.go re PR go/89168 (FAIL: cmd/go/internal/load) 2019-02-15 00:36:50 +00:00
export_debug_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
export_linux_test.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
export_mmap_test.go libgo: update to Go 1.8 release candidate 1 2017-01-14 00:05:42 +00:00
export_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
export_unix_test.go libgo: add hurd build tags to test files 2019-02-01 22:11:50 +00:00
export_windows_test.go libgo: update to go1.7rc3 2016-07-22 18:15:38 +00:00
extern.go libgo: update to Go 1.12 release 2019-02-26 15:38:12 +00:00
fastlog2_test.go Big merge of changes to gofrontend repo that were postponed due to the 2017-05-10 17:26:09 +00:00
fastlog2.go libgo: update to go1.9 2017-09-14 17:11:35 +00:00
fastlog2table.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
ffi.go runtime: add padding to FFI type of struct ending with zero-sized field 2019-01-15 23:21:24 +00:00
float.go libgo: update to go1.9 2017-09-14 17:11:35 +00:00
gc_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
gcinfo_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
hash32.go libgo: add support for the Nios II architecture 2018-05-02 22:28:46 +00:00
hash64.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
hash_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
heapdump.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
iface_test.go libgo: update to go1.9 2017-09-14 17:11:35 +00:00
iface.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
lfstack_32bit.go libgo: support x32 as GOARCH=amd64p32 GOOS=linux 2018-10-01 20:17:11 +00:00
lfstack_64bit.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
lfstack_test.go
lfstack.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
lock_futex.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
lock_js.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
lock_sema.go libgo: add hurd build tags 2019-02-01 21:57:36 +00:00
malloc_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
malloc.go libgo: fix build on AIX 2019-03-19 14:00:59 +00:00
map_benchmark_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
map_fast32.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
map_fast64.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
map_faststr.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
map_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
map.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mbarrier.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mbitmap.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mcache.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mcentral.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mem_gccgo.go libgo: fix build on AIX 2019-03-19 14:00:59 +00:00
memmove_linux_amd64_test.go Big merge of changes to gofrontend repo that were postponed due to the 2017-05-10 17:26:09 +00:00
memmove_test.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
mfinal_test.go libgo: update to Go1.10beta1 2018-01-09 01:23:08 +00:00
mfinal.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mfixalloc.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mgc_gccgo.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mgc.go compiler, runtime: harmonize types referenced by both C and Go 2019-02-15 01:57:51 +00:00
mgclarge.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mgcmark.go runtime: enable precise GC checks when using stack maps 2019-03-05 23:05:38 +00:00
mgcsweep.go runtime: enable precise GC checks when using stack maps 2019-03-05 23:05:38 +00:00
mgcsweepbuf.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mgcwork.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mheap.go libgo: update to Go1.12rc1 2019-02-26 01:00:39 +00:00
mkfastlog2table.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mksizeclasses.go libgo: update to Go1.10beta1 2018-01-09 01:23:08 +00:00
mprof.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
msan0.go compiler, runtime: replace hashmap code with Go 1.7 hashmap 2016-09-21 20:58:51 +00:00
msize.go libgo: update to go1.9 2017-09-14 17:11:35 +00:00
mstats.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mwbbuf.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
net_plan9.go compiler: improve name mangling for packpaths 2018-10-25 22:18:08 +00:00
netpoll_aix.go libgo: fix build on AIX 2019-03-19 14:00:59 +00:00
netpoll_epoll.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
netpoll_fake.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
netpoll_hurd.go runtime: add hurd netpoll and semaphore support 2019-02-01 23:57:08 +00:00
netpoll_kqueue.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
netpoll_solaris.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
netpoll_stub.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
netpoll_windows.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
netpoll.go compiler, runtime: harmonize types referenced by both C and Go 2019-02-15 01:57:51 +00:00
norace_test.go runtime: remove the dummy arg of getcallersp 2018-08-24 18:15:04 +00:00
numcpu_freebsd_test.go libgo: update to go1.9 2017-09-14 17:11:35 +00:00
os3_solaris.go runtime: call execname and getpagesize on Solaris 2019-03-01 14:21:24 +00:00
os_aix.go libgo: fix build on AIX 2019-03-19 14:00:59 +00:00
os_darwin.go libgo: update to Go 1.11.1 release 2018-10-08 14:21:30 +00:00
os_dragonfly.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
os_freebsd.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
os_gccgo.go runtime: add precise stack scan support 2018-12-05 23:09:51 +00:00
os_hurd.go runtime: add hurd netpoll and semaphore support 2019-02-01 23:57:08 +00:00
os_js.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
os_linux_arm64.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
os_linux_arm.go re PR go/88927 (Bootstrap failure on arm in libgo starting with r268084) 2019-01-22 00:06:44 +00:00
os_linux_mips64x.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
os_linux_mipsx.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
os_linux_noauxv.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
os_linux_ppc64x.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
os_linux_s390x.go re PR go/89123 (Too many go test failures on s390x-linux) 2019-02-15 14:51:10 +00:00
os_linux.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
os_netbsd.go libgo: update to Go 1.11.1 release 2018-10-08 14:21:30 +00:00
os_openbsd.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
os_solaris.go runtime: copy internal locking code from Go 1.7 runtime 2016-09-30 13:45:08 +00:00
os_windows_arm.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
panic.go runtime: use the call instruction's PC for panic-in-runtime detection 2019-01-29 00:49:23 +00:00
print.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
proc_runtime_test.go libgo: update to Go1.10beta1 2018-01-09 01:23:08 +00:00
proc_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
proc.go re PR go/89172 (FAIL: runtime/pprof) 2019-02-27 22:35:10 +00:00
profbuf_test.go libgo: update to go1.9 2017-09-14 17:11:35 +00:00
profbuf.go libgo: update to go1.9 2017-09-14 17:11:35 +00:00
proflabel.go compiler: improve name mangling for packpaths 2018-10-25 22:18:08 +00:00
race0.go compiler, runtime: replace hashmap code with Go 1.7 hashmap 2016-09-21 20:58:51 +00:00
rand_test.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
rdebug.go compiler: improve name mangling for packpaths 2018-10-25 22:18:08 +00:00
relax_stub.go libgo: update to go1.9 2017-09-14 17:11:35 +00:00
runtime1.go runtime: enable precise GC checks when using stack maps 2019-03-05 23:05:38 +00:00
runtime2.go runtime: abort stack scan in cases that we cannot unwind the stack 2019-02-19 15:32:34 +00:00
runtime_mmap_test.go libgo: update to Go1.10beta1 2018-01-09 01:23:08 +00:00
runtime_test.go runtime: skip testSetPanicOnFault for gollvm 2018-10-09 16:51:10 +00:00
runtime_unix_test.go libgo: add hurd build tags to test files 2019-02-01 22:11:50 +00:00
runtime-lldb_test.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
runtime.go libgo: update to Go1.10beta1 2018-01-09 01:23:08 +00:00
rwmutex_test.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
rwmutex.go libgo: update to Go1.10rc1 2018-01-27 23:44:29 +00:00
select.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
sema.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
semasleep_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
signal_gccgo.go libgo: add hurd build tags 2019-02-01 21:57:36 +00:00
signal_sighandler.go libgo: add hurd build tags 2019-02-01 21:57:36 +00:00
signal_unix.go libgo: add hurd build tags 2019-02-01 21:57:36 +00:00
sigqueue.go compiler: improve name mangling for packpaths 2018-10-25 22:18:08 +00:00
sizeclasses.go libgo: update to Go1.10beta1 2018-01-09 01:23:08 +00:00
sizeof_test.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
slice_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
slice.go compiler,runtime: pass old slice's ptr/len/cap by value to growslice 2019-03-19 18:42:43 +00:00
string_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
string.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
stubs2.go libgo: fix build on AIX 2019-03-19 14:00:59 +00:00
stubs3.go re PR go/86535 (FreeBSD/PowerPC64 - Building Go Frontend support for gcc 7.3.0 fails) 2019-02-26 14:46:56 +00:00
stubs_linux.go runtime: add precise stack scan support 2018-12-05 23:09:51 +00:00
stubs_nonlinux.go runtime: add missing return for non-GNU/Linux version of tgkill 2018-12-07 14:22:55 +00:00
stubs.go runtime: abort stack scan in cases that we cannot unwind the stack 2019-02-19 15:32:34 +00:00
symtab_test.go libgo: update to go1.9 2017-09-14 17:11:35 +00:00
symtab.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
sys_darwin_32.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
sys_darwin_64.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
sys_darwin.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
sys_wasm.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
time.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
timeasm.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
timestub2.go libgo: fix build on AIX 2019-03-19 14:00:59 +00:00
timestub.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
trace.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
traceback_gccgo.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
type.go compiler, runtime: panic on uncomparable map key, even if map is empty 2019-01-15 20:32:39 +00:00
typekind.go compiler, runtime: replace hashmap code with Go 1.7 hashmap 2016-09-21 20:58:51 +00:00
unaligned1.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
unaligned2.go libgo: add support for the Nios II architecture 2018-05-02 22:28:46 +00:00
utf8.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
write_err_android.go libgo: update to go1.9 2017-09-14 17:11:35 +00:00
write_err.go Accidentally failed to commit these earlier, as part of: 2016-10-11 00:08:35 +00:00