runtime: copy channel code from Go 1.7 runtime
authorIan Lance Taylor <ian@gcc.gnu.org>
Mon, 10 Oct 2016 16:52:09 +0000 (16:52 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Mon, 10 Oct 2016 16:52:09 +0000 (16:52 +0000)
commit5d8c099edebfe908256c2bd77a0e2b67182b0f57
tree6033d9fc6d1e3f5c3019c9b13d28e70655697a67
parent40962ac03a869cf7e07e0672c0a649371896277b
runtime: copy channel code from Go 1.7 runtime

    Change the compiler to use the new routines. Drop the separation of
    small and large values when sending on a channel. Allocate the select
    struct on the stack. Remove the old C implementation of channels. Adjust
    the garbage collector for the new data structure.

    Bring in part of the tracing code, enough for the channel code to call.

    Bump the permitted number of allocations in one of the tests in
    context_test.go. The difference is that now receiving from a channel
    allocates a sudog, which the C code used to simply put on the
    stack. This will be somewhat better when we port proc.go.

    Reviewed-on: https://go-review.googlesource.com/30714

From-SVN: r240941
23 files changed:
gcc/go/gofrontend/MERGE
gcc/go/gofrontend/escape.cc
gcc/go/gofrontend/expressions.cc
gcc/go/gofrontend/runtime.def
gcc/go/gofrontend/statements.cc
gcc/go/gofrontend/types.cc
gcc/go/gofrontend/types.h
libgo/Makefile.am
libgo/Makefile.in
libgo/go/context/context_test.go
libgo/go/runtime/chan.go [new file with mode: 0644]
libgo/go/runtime/runtime2.go
libgo/go/runtime/select.go [new file with mode: 0644]
libgo/go/runtime/stubs.go
libgo/go/runtime/trace.go [new file with mode: 0644]
libgo/runtime/chan.goc [deleted file]
libgo/runtime/chan.h [deleted file]
libgo/runtime/go-cgo.c
libgo/runtime/heapdump.c
libgo/runtime/mgc0.c
libgo/runtime/proc.c
libgo/runtime/runtime.h
libgo/runtime/sema.goc