gcc/libgo/go/runtime
Ian Lance Taylor 10172a64ce compiler, runtime, reflect: generate hash functions only for map keys
Right now we generate hash functions for all types, just in case they
    are used as map keys. That's a lot of wasted effort and binary size
    for types which will never be used as a map key. Instead, generate
    hash functions only for types that we know are map keys.
    
    Just doing that is a bit too simple, since maps with an interface type
    as a key might have to hash any concrete key type that implements that
    interface. So for that case, implement hashing of such types at
    runtime (instead of with generated code). It will be slower, but only
    for maps with interface types as keys, and maybe only a bit slower as
    the aeshash time probably dominates the dispatch time.
    
    Reorg where we keep the equals and hash functions. Move the hash function
    from the key type to the map type, saving a field in every non-map type.
    That leaves only one function in the alg structure, so get rid of that and
    just keep the equal function in the type descriptor itself.
    
    While we're here, reorganize the rtype struct to more closely match
    the gc version.
    
    This is the gofrontend version of https://golang.org/cl/191198.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/212843

From-SVN: r279848
2020-01-02 21:55:32 +00:00
..
debug libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
internal libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
msan libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
pprof libgo: update to Go1.13 2019-09-12 23:22:53 +00:00
testdata libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
trace libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
alg.go compiler, runtime, reflect: generate hash functions only for map keys 2020-01-02 21:55:32 +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.13beta1 release 2019-09-06 18:12:46 +00:00
callers_test.go
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 Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
cgocheck.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
chan_test.go libgo: update to Go1.10beta1 2018-01-09 01:23:08 +00:00
chan.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
chanbarrier_test.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
closure_test.go
compiler.go
complex_test.go
cpuprof.go libgo: update to Go1.13 2019-09-12 23:22:53 +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 Go 1.13beta1 release 2019-09-06 18:12:46 +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: update to Go 1.13beta1 release 2019-09-06 18:12:46 +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.13beta1 release 2019-09-06 18:12:46 +00:00
debuglog_off.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
debuglog_on.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
debuglog_test.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
debuglog.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
env_posix.go libgo: add hurd build tags 2019-02-01 21:57:36 +00:00
env_test.go
error.go compiler, runtime: provide index information on bounds check failure 2019-08-28 18:27:30 +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_debuglog_test.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +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.13beta1 release 2019-09-06 18:12:46 +00:00
export_test.go libgo: update to Go1.13 2019-09-12 23:22:53 +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
extern.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
fastlog2_test.go
fastlog2.go
fastlog2table.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
ffi.go runtime: for FFI, treat directIface types as pointers 2019-09-17 20:26:21 +00:00
float.go
gc_test.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
gcinfo_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
hash32.go compiler, runtime: support and use single argument go:linkname 2019-08-31 03:01:15 +00:00
hash64.go compiler, runtime: support and use single argument go:linkname 2019-08-31 03:01:15 +00:00
hash_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
heapdump.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
iface_test.go
iface.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +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 compiler, runtime: support and use single argument go:linkname 2019-08-31 03:01:15 +00:00
lock_js.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
lock_sema.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
malloc_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
malloc.go libgo: update to Go1.13 2019-09-12 23:22:53 +00:00
map_benchmark_test.go compiler, runtime, reflect: generate hash functions only for map keys 2020-01-02 21:55:32 +00:00
map_fast32.go compiler, runtime, reflect: generate hash functions only for map keys 2020-01-02 21:55:32 +00:00
map_fast64.go compiler, runtime, reflect: generate hash functions only for map keys 2020-01-02 21:55:32 +00:00
map_faststr.go compiler, runtime, reflect: generate hash functions only for map keys 2020-01-02 21:55:32 +00:00
map_test.go compiler, runtime, reflect: generate hash functions only for map keys 2020-01-02 21:55:32 +00:00
map.go compiler, runtime, reflect: generate hash functions only for map keys 2020-01-02 21:55:32 +00:00
mbarrier.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
mbitmap.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
mcache.go libgo: update to Go1.13 2019-09-12 23:22:53 +00:00
mcentral.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
mem_gccgo.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
memmove_linux_amd64_test.go
memmove_test.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
mfinal_test.go libgo: update to Go1.10beta1 2018-01-09 01:23:08 +00:00
mfinal.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
mfixalloc.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mgc_gccgo.go compiler, runtime: support and use single argument go:linkname 2019-08-31 03:01:15 +00:00
mgc.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
mgclarge.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
mgcmark.go compiler, runtime: support and use single argument go:linkname 2019-08-31 03:01:15 +00:00
mgcscavenge.go libgo: update to Go1.13 2019-09-12 23:22:53 +00:00
mgcsweep.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +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.13 2019-09-12 23:22:53 +00:00
mkfastlog2table.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
mksizeclasses.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
mprof.go libgo: delay applying profile stack-frame skip until fixup 2019-06-03 23:07:54 +00:00
msan0.go
msize.go
mstats.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
mwbbuf.go runtime: scan write barrier buffer conservatively 2019-08-17 04:35:37 +00:00
net_plan9.go compiler: improve name mangling for packpaths 2018-10-25 22:18:08 +00:00
netpoll_aix.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
netpoll_epoll.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +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 Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
netpoll_solaris.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +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 libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
norace_test.go runtime: remove the dummy arg of getcallersp 2018-08-24 18:15:04 +00:00
numcpu_freebsd_test.go
os3_solaris.go runtime: move osinit to Go 2019-08-28 20:39:32 +00:00
os_aix.go runtime: move osinit to Go 2019-08-28 20:39:32 +00:00
os_darwin.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
os_dragonfly.go runtime: move osinit to Go 2019-08-28 20:39:32 +00:00
os_freebsd.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
os_gccgo.go compiler, runtime: support and use single argument go:linkname 2019-08-31 03:01:15 +00:00
os_hurd.go re PR go/93020 (Final patches to build gcc-10 on GNU/Hurd) 2019-12-24 05:05:32 +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 runtime: correct facilities names in s390 CPU support 2019-10-14 14:10:16 +00:00
os_linux.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
os_netbsd_arm64.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
os_netbsd.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
os_openbsd_arm64.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
os_openbsd.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
os_solaris.go libgo: Solaris and x/sys/cpu compatibility fixes 2019-09-10 20:41:04 +00:00
os_windows_arm.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
panic32.go compiler, runtime: support and use single argument go:linkname 2019-08-31 03:01:15 +00:00
panic.go libgo: update to Go1.13 2019-09-12 23:22:53 +00:00
print.go compiler, runtime: support and use single argument go:linkname 2019-08-31 03:01:15 +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.13 2019-09-12 23:22:53 +00:00
proc.go libgo: update to Go1.13 2019-09-12 23:22:53 +00:00
profbuf_test.go
profbuf.go
proflabel.go compiler: improve name mangling for packpaths 2018-10-25 22:18:08 +00:00
race0.go
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
runtime1.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
runtime2.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
runtime_mmap_test.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
runtime_test.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +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.13beta1 release 2019-09-06 18:12:46 +00:00
runtime.go compiler, runtime: support and use single argument go:linkname 2019-08-31 03:01:15 +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 compiler, runtime: support and use single argument go:linkname 2019-08-31 03:01:15 +00:00
sema.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
semasleep_test.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
signal_gccgo.go libgo: drop Solaris 10 support 2019-05-13 20:26:24 +00:00
signal_sighandler.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
signal_unix.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
sigqueue_note.go libgo: update to Go1.13 2019-09-12 23:22:53 +00:00
sigqueue.go libgo: update to Go1.13 2019-09-12 23:22:53 +00:00
sizeclasses.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +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 libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
stack_test.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
string_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
string.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
stubs2.go runtime: move osinit to Go 2019-08-28 20:39:32 +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 libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
symtab_test.go
symtab.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +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: delay applying profile stack-frame skip until fixup 2019-06-03 23:07:54 +00:00
treap_test.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
type.go compiler, runtime, reflect: generate hash functions only for map keys 2020-01-02 21:55:32 +00:00
typekind.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
utf8.go compiler, runtime: support and use single argument go:linkname 2019-08-31 03:01:15 +00:00
write_err_android.go libgo: update to Go 1.13beta1 release 2019-09-06 18:12:46 +00:00
write_err.go