aboutsummaryrefslogtreecommitdiff
path: root/libgo/runtime/go-defer.c
AgeCommit message (Collapse)AuthorFilesLines
2016-11-22runtime: rewrite panic/defer code from C to GoIan Lance Taylor1-84/+0
The actual stack unwind code is still in C, but the rest of the code, notably all the memory allocation, is now in Go. The names are changed to the names used in the Go 1.7 runtime, but the code is necessarily somewhat different. The __go_makefunc_can_recover function is dropped, as the uses of it were removed in https://golang.org/cl/198770044. Reviewed-on: https://go-review.googlesource.com/33414 From-SVN: r242715
2016-08-30runtime: use -fgo-c-header to build C header fileIan Lance Taylor1-20/+19
Use the new -fgo-c-header option to build a header file for the Go runtime code in libgo/go/runtime, and use the new header file in the C runtime code in libgo/runtime. This will ensure that the Go code and C code share the same data structures as we convert the runtime from C to Go. The new file libgo/go/runtime/runtime2.go is copied from the Go 1.7 release, and then edited to remove unnecessary data structures and modify others for use with libgo. The new file libgo/go/runtime/mcache.go is an initial version of the same files in the Go 1.7 release, and will be replaced by the Go 1.7 file when we convert to the new memory allocator. The new file libgo/go/runtime/type.go describes the gccgo version of the reflection data structures, and replaces the Go 1.7 runtime file which describes the gc version of those structures. Using the new header file means changing a number of struct fields to use Go naming conventions (that is, no underscores) and to rename constants to have a leading underscore so that they are not exported from the Go package. These names were updated in the C code. The C code was also changed to drop the thread-local variable m, as was done some time ago in the gc sources. Now the m field is always accessed using g->m, where g is the single remaining thread-local variable. This in turn required some adjustments to set g->m correctly in all cases. Also pass the new -fgo-compiling-runtime option when compiling the runtime package, although that option doesn't do anything yet. Reviewed-on: https://go-review.googlesource.com/28051 From-SVN: r239872
2014-10-08re PR go/60406 (recover.go: test13reflect2 test failure)Ian Lance Taylor1-1/+1
PR go/60406 runtime: Check callers in can_recover if return address doesn't match. Also use __builtin_extract_return_address and tighten up the checks in FFI code. Fixes PR 60406. From-SVN: r216003
2014-06-06libgo: Merge to master revision 19184.Ian Lance Taylor1-6/+4
The next revision, 19185, renames several runtime files, and will be handled in a separate change. From-SVN: r211328
2013-12-12runtime: Fix defer of unlock thread at program startup.Ian Lance Taylor1-1/+2
Don't free stack allocated defer block. Also ensure we have a Go context in a few more places before freeing the block. From-SVN: r205940
2013-12-11reflect, runtime: Let reflect.MakeFunc functions call recover.Ian Lance Taylor1-0/+1
From-SVN: r205908
2013-07-23runtime: Support cgo callbacks from threads started by C.Ian Lance Taylor1-1/+9
This adjusts the extram support to work with gccgo. There are some corresponding changes to cgo in https://codereview.appspot.com/11406047/ . From-SVN: r201179
2011-11-28runtime: Multiplex goroutines onto OS threads.Ian Lance Taylor1-0/+8
From-SVN: r181772
2011-11-11Introduce G structure and thread-local global g.Ian Lance Taylor1-15/+9
From-SVN: r181301
2011-09-16Fix defer when not calling recover in function with named results.Ian Lance Taylor1-2/+8
From-SVN: r178905
2010-12-03Add Go frontend, libgo library, and Go testsuite.Ian Lance Taylor1-0/+69
gcc/: * gcc.c (default_compilers): Add entry for ".go". * common.opt: Add -static-libgo as a driver option. * doc/install.texi (Configuration): Mention libgo as an option for --enable-shared. Mention go as an option for --enable-languages. * doc/invoke.texi (Overall Options): Mention .go as a file name suffix. Mention go as a -x option. * doc/frontends.texi (G++ and GCC): Mention Go as a supported language. * doc/sourcebuild.texi (Top Level): Mention libgo. * doc/standards.texi (Standards): Add section on Go language. Move references for other languages into their own section. * doc/contrib.texi (Contributors): Mention that I contributed the Go frontend. gcc/testsuite/: * lib/go.exp: New file. * lib/go-dg.exp: New file. * lib/go-torture.exp: New file. * lib/target-supports.exp (check_compile): Match // Go. From-SVN: r167407