aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/runtime/runtime2.go
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2019-01-18 19:04:36 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2019-01-18 19:04:36 +0000
commit4f4a855d82a889cebcfca150a7a43909bcb6a346 (patch)
treef12bae0781920fa34669fe30b6f4615a86d9fb80 /libgo/go/runtime/runtime2.go
parent225220d668dafb8262db7012bced688acbe63b33 (diff)
downloadgcc-4f4a855d82a889cebcfca150a7a43909bcb6a346.zip
gcc-4f4a855d82a889cebcfca150a7a43909bcb6a346.tar.gz
gcc-4f4a855d82a889cebcfca150a7a43909bcb6a346.tar.bz2
libgo: update to Go1.12beta2
Reviewed-on: https://go-review.googlesource.com/c/158019 gotools/: * Makefile.am (go_cmd_vet_files): Update for Go1.12beta2 release. (GOTOOLS_TEST_TIMEOUT): Increase to 600. (check-runtime): Export LD_LIBRARY_PATH before computing GOARCH and GOOS. (check-vet): Copy golang.org/x/tools into check-vet-dir. * Makefile.in: Regenerate. gcc/testsuite/: * go.go-torture/execute/names-1.go: Stop using debug/xcoff, which is no longer externally visible. From-SVN: r268084
Diffstat (limited to 'libgo/go/runtime/runtime2.go')
-rw-r--r--libgo/go/runtime/runtime2.go41
1 files changed, 31 insertions, 10 deletions
diff --git a/libgo/go/runtime/runtime2.go b/libgo/go/runtime/runtime2.go
index 0e9cf63..4cd68da 100644
--- a/libgo/go/runtime/runtime2.go
+++ b/libgo/go/runtime/runtime2.go
@@ -5,6 +5,7 @@
package runtime
import (
+ "internal/cpu"
"runtime/internal/atomic"
"runtime/internal/sys"
"unsafe"
@@ -439,7 +440,12 @@ type g struct {
scang uintptr // the g that wants to scan this g's stack (uintptr to avoid write barrier)
scangcw uintptr // gc worker for scanning stack (uintptr to avoid write barrier)
- isSystemGoroutine bool // whether goroutine is a "system" goroutine
+ isSystemGoroutine bool // whether goroutine is a "system" goroutine
+ isFinalizerGoroutine bool // whether goroutine is the finalizer goroutine
+
+ deferring bool // whether we are running a deferred function
+ goexiting bool // whether we are running Goexit
+ ranCgocallBackDone bool // whether we deferred CgocallBackDone
traceback uintptr // stack traceback buffer
@@ -463,6 +469,7 @@ type m struct {
caughtsig guintptr // goroutine running during fatal signal
p puintptr // attached p for executing go code (nil if not executing go code)
nextp puintptr
+ oldp puintptr // the p that was attached before executing a syscall
id int64
mallocing int32
throwing int32
@@ -471,7 +478,6 @@ type m struct {
softfloat int32
dying int32
profilehz int32
- helpgc int32
spinning bool // m is out of work and is actively looking for work
blocked bool // m is blocked on a note
inwb bool // m is executing a write barrier
@@ -564,8 +570,10 @@ type p struct {
runnext guintptr
// Available G's (status == Gdead)
- gfree *g
- gfreecnt int32
+ gFree struct {
+ gList
+ n int32
+ }
sudogcache []*sudog
sudogbuf [128]*sudog
@@ -604,7 +612,7 @@ type p struct {
runSafePointFn uint32 // if 1, run sched.safePointFn at next safe point
- pad [sys.CacheLineSize]byte
+ pad cpu.CacheLinePad
}
type schedt struct {
@@ -632,14 +640,27 @@ type schedt struct {
nmspinning uint32 // See "Worker thread parking/unparking" comment in proc.go.
// Global runnable queue.
- runqhead guintptr
- runqtail guintptr
+ runq gQueue
runqsize int32
+ // disable controls selective disabling of the scheduler.
+ //
+ // Use schedEnableUser to control this.
+ //
+ // disable is protected by sched.lock.
+ disable struct {
+ // user disables scheduling of user goroutines.
+ user bool
+ runnable gQueue // pending runnable Gs
+ n int32 // length of runnable
+ }
+
// Global cache of dead G's.
- gflock mutex
- gfree *g
- ngfree int32
+ gFree struct {
+ lock mutex
+ list gList // Gs
+ n int32
+ }
// Central cache of sudog structs.
sudoglock mutex