gcc/libgo/go/runtime
Ian Lance Taylor 5e87c2806f compiler,runtime: do more direct interfaces
A direct interface is an interface whose data word contains the
    actual data value, instead of a pointer to it. The gc toolchain
    creates a direct interface if the value is pointer shaped, that
    includes pointers (including unsafe.Pointer), functions, channels,
    maps, and structs and arrays containing a single pointer-shaped
    field. In gccgo, we only do this for pointers. This CL unifies
    direct interface types with gc. This reduces allocations when
    converting such types to interfaces.
    
    Our method functions used to always take pointer receivers, to
    make interface calls easy. Now for direct interface types, their
    value methods will take value receivers. For a pointer to those
    types, when converted to interface, the interface data contains
    the pointer. For that interface to call a value method, it will
    need a wrapper method that dereference the pointer and invokes
    the value method. The wrapper method, instead of the actual one,
    is put into the itable of the pointer type.
    
    In the runtime, adjust funcPC for the new layout of interfaces of
    functions.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/168409

From-SVN: r270779
2019-05-01 21:34:16 +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 compiler,runtime: do more direct interfaces 2019-05-01 21:34:16 +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
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
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
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
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
extern.go libgo: update to Go 1.12 release 2019-02-26 15:38:12 +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: add padding to FFI type of struct ending with zero-sized field 2019-01-15 23:21:24 +00:00
float.go
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
iface.go compiler,runtime: do more direct interfaces 2019-05-01 21:34:16 +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
memmove_test.go libgo: update to Go 1.11 2018-09-24 21:46:21 +00:00
mfinal_test.go
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
mprof.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
msan0.go
msize.go
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
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
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
proc_test.go libgo: update to Go1.12beta2 2019-01-18 19:04:36 +00:00
proc.go compiler,runtime: do more direct interfaces 2019-05-01 21:34:16 +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 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 runtime: fix TestPhysPageSize on AIX 2019-04-26 17:20:55 +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.12.2 2019-04-08 18:36:25 +00:00
runtime.go
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
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
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
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
write_err.go