gcc/libgo
Ian Lance Taylor c8a47c4877 runtime: avoid write barriers when calling deferred function
Calling a deferred function currently requires changing from a uintptr
    to the function code to a Go function value. That is done by setting
    the value of a func local variable using unsafe.Pointer. The local
    variable will always be on the stack. Adjust the code that sets the
    local variable to avoid generating a write barrier.
    
    A write barrier is never needed here. Also, for deferreturn, we must
    avoid write barriers entirely when called from a cgo function; that
    requires more than just this, but this is a start.
    
    The test for this is runtime tests that use the go tool; these are not
    currently run, but they will be in the future.
    
    Reviewed-on: https://go-review.googlesource.com/46455

From-SVN: r249559
2017-06-22 14:33:13 +00:00
..
config libgo: Update libtool support to files in current GCC trunk. 2014-11-12 03:51:36 +00:00
go runtime: avoid write barriers when calling deferred function 2017-06-22 14:33:13 +00:00
runtime compiler, runtime: better stack trace for go f() where f is nil 2017-06-22 04:13:36 +00:00
testsuite libgo: remove old MIPS architecture names 2017-06-21 22:11:04 +00:00
aclocal.m4 libgo: fixes for Solaris build 2016-12-13 18:03:45 +00:00
config.h.in libgo, syscall: fix ptrace implementation on MIPS 2017-06-21 21:42:41 +00:00
configure libgo: remove old MIPS architecture names 2017-06-21 22:11:04 +00:00
configure.ac libgo: remove old MIPS architecture names 2017-06-21 22:11:04 +00:00
godeps.sh libgo: change build procedure to use build tags 2016-08-06 00:36:33 +00:00
libgo.imp Big merge of changes to gofrontend repo that were postponed due to the 2017-05-10 17:26:09 +00:00
LICENSE LICENSE: separate, change PATENTS text. 2010-12-06 22:27:47 +00:00
Makefile.am libgo: support for sparc64 GNU/Linux 2017-05-31 21:36:42 +00:00
Makefile.in libgo: support for sparc64 GNU/Linux 2017-05-31 21:36:42 +00:00
match.sh libgo: remove old MIPS architecture names 2017-06-21 22:11:04 +00:00
MERGE libgo: update to 1.8.3 release 2017-06-08 19:02:12 +00:00
merge.sh libgo: update to go1.8rc3 2017-01-27 15:01:57 +00:00
mkrsysinfo.sh libgo: support for sparc64 GNU/Linux 2017-05-31 21:36:42 +00:00
mksigtab.sh mksigtab.sh: recurse once when adding signals to SIGLIST 2017-05-12 01:09:42 +00:00
mksysinfo.sh libgo, syscall: fix ptrace implementation on MIPS 2017-06-21 21:42:41 +00:00
mvifdiff.sh runtime: introduce mvifdiff.sh script to replace GCC's move-if-change 2014-12-01 01:06:29 +00:00
PATENTS LICENSE: separate, change PATENTS text. 2010-12-06 22:27:47 +00:00
README libgo/README: Minor updates. 2015-03-13 18:53:13 +00:00
README.gcc libgo/README.gcc: Mention GCCGO_RUN_ALL_TESTS. 2011-03-09 19:17:56 +00:00
sysinfo.c libgo, syscall: fix ptrace implementation on MIPS 2017-06-21 21:42:41 +00:00
VERSION libgo: update to 1.8.3 release 2017-06-08 19:02:12 +00:00

See ../README.

This is the runtime support library for the Go programming language.
This library is intended for use with the Go frontend.

This library should not be stripped when it is installed.  Go code
relies on being able to look up file/line information, which comes
from the debugging info using the libbacktrace library.

The library has only been tested on GNU/Linux using glibc, and on
Solaris.  It should not be difficult to port to other operating
systems.

Directories:

go
  A copy of the Go library from http://golang.org/, with several
  changes for gccgo.

runtime
  Runtime functions, written in C, which are called directly by the
  compiler or by the library.

Contributing
============

To contribute patches to the files in this directory, please see
http://golang.org/doc/gccgo_contribute.html .

The master copy of these files is hosted at
http://code.google.com/p/gofrontend .  Changes to these files require
signing a Google contributor license agreement.  If you are the
copyright holder, you will need to agree to the individual contributor
license agreement at
http://code.google.com/legal/individual-cla-v1.0.html.  This agreement
can be completed online.

If your organization is the copyright holder, the organization will
need to agree to the corporate contributor license agreement at
http://code.google.com/legal/corporate-cla-v1.0.html.

If the copyright holder for your code has already completed the
agreement in connection with another Google open source project, it
does not need to be completed again.