mirror of
https://github.com/golang/go
synced 2024-11-16 21:34:52 -07:00
runtime: remove go115ReduceLiveness and go115RestartSeq
Make them always true. Delete code that are only executed when they are false. Change-Id: I6194fa00de23486c2b0a0c9075fe3a09d9c52762 Reviewed-on: https://go-review.googlesource.com/c/go/+/264339 Trust: Cherry Zhang <cherryyz@google.com> Reviewed-by: Austin Clements <austin@google.com>
This commit is contained in:
parent
420c68dd68
commit
8414b1a5a4
@ -76,23 +76,6 @@ func debugCallCheck(pc uintptr) string {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !go115ReduceLiveness {
|
|
||||||
// Look up PC's register map.
|
|
||||||
pcdata := int32(-1)
|
|
||||||
if pc != f.entry {
|
|
||||||
pc--
|
|
||||||
pcdata = pcdatavalue(f, _PCDATA_RegMapIndex, pc, nil)
|
|
||||||
}
|
|
||||||
if pcdata == -1 {
|
|
||||||
pcdata = 0 // in prologue
|
|
||||||
}
|
|
||||||
stkmap := (*stackmap)(funcdata(f, _FUNCDATA_RegPointerMaps))
|
|
||||||
if pcdata == _PCDATA_RegMapUnsafe || stkmap == nil {
|
|
||||||
// Not at a safe point.
|
|
||||||
ret = debugCallUnsafePoint
|
|
||||||
return
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Check that this isn't an unsafe-point.
|
// Check that this isn't an unsafe-point.
|
||||||
if pc != f.entry {
|
if pc != f.entry {
|
||||||
pc--
|
pc--
|
||||||
@ -102,7 +85,6 @@ func debugCallCheck(pc uintptr) string {
|
|||||||
// Not at a safe point.
|
// Not at a safe point.
|
||||||
ret = debugCallUnsafePoint
|
ret = debugCallUnsafePoint
|
||||||
}
|
}
|
||||||
}
|
|
||||||
})
|
})
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
@ -8,13 +8,12 @@
|
|||||||
//
|
//
|
||||||
// These must agree with symtab.go and ../cmd/internal/objabi/funcdata.go.
|
// These must agree with symtab.go and ../cmd/internal/objabi/funcdata.go.
|
||||||
|
|
||||||
#define PCDATA_RegMapIndex 0
|
#define PCDATA_UnsafePoint 0
|
||||||
#define PCDATA_StackMapIndex 1
|
#define PCDATA_StackMapIndex 1
|
||||||
#define PCDATA_InlTreeIndex 2
|
#define PCDATA_InlTreeIndex 2
|
||||||
|
|
||||||
#define FUNCDATA_ArgsPointerMaps 0 /* garbage collector blocks */
|
#define FUNCDATA_ArgsPointerMaps 0 /* garbage collector blocks */
|
||||||
#define FUNCDATA_LocalsPointerMaps 1
|
#define FUNCDATA_LocalsPointerMaps 1
|
||||||
#define FUNCDATA_RegPointerMaps 2
|
|
||||||
#define FUNCDATA_StackObjects 3
|
#define FUNCDATA_StackObjects 3
|
||||||
#define FUNCDATA_InlTree 4
|
#define FUNCDATA_InlTree 4
|
||||||
#define FUNCDATA_OpenCodedDeferInfo 5 /* info for func with open-coded defers */
|
#define FUNCDATA_OpenCodedDeferInfo 5 /* info for func with open-coded defers */
|
||||||
|
@ -58,11 +58,6 @@ import (
|
|||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Keep in sync with cmd/compile/internal/gc/plive.go:go115ReduceLiveness.
|
|
||||||
const go115ReduceLiveness = true
|
|
||||||
|
|
||||||
const go115RestartSeq = go115ReduceLiveness && true // enable restartable sequences
|
|
||||||
|
|
||||||
type suspendGState struct {
|
type suspendGState struct {
|
||||||
g *g
|
g *g
|
||||||
|
|
||||||
@ -402,25 +397,13 @@ func isAsyncSafePoint(gp *g, pc, sp, lr uintptr) (bool, uintptr) {
|
|||||||
// use the LR for unwinding, which will be bad.
|
// use the LR for unwinding, which will be bad.
|
||||||
return false, 0
|
return false, 0
|
||||||
}
|
}
|
||||||
var up int32
|
up, startpc := pcdatavalue2(f, _PCDATA_UnsafePoint, pc)
|
||||||
var startpc uintptr
|
|
||||||
if !go115ReduceLiveness {
|
|
||||||
smi := pcdatavalue(f, _PCDATA_RegMapIndex, pc, nil)
|
|
||||||
if smi == _PCDATA_RegMapUnsafe {
|
|
||||||
// Unsafe-point marked by compiler. This includes
|
|
||||||
// atomic sequences (e.g., write barrier) and nosplit
|
|
||||||
// functions (except at calls).
|
|
||||||
return false, 0
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
up, startpc = pcdatavalue2(f, _PCDATA_UnsafePoint, pc)
|
|
||||||
if up != _PCDATA_UnsafePointSafe {
|
if up != _PCDATA_UnsafePointSafe {
|
||||||
// Unsafe-point marked by compiler. This includes
|
// Unsafe-point marked by compiler. This includes
|
||||||
// atomic sequences (e.g., write barrier) and nosplit
|
// atomic sequences (e.g., write barrier) and nosplit
|
||||||
// functions (except at calls).
|
// functions (except at calls).
|
||||||
return false, 0
|
return false, 0
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if fd := funcdata(f, _FUNCDATA_LocalsPointerMaps); fd == nil || fd == unsafe.Pointer(&no_pointers_stackmap) {
|
if fd := funcdata(f, _FUNCDATA_LocalsPointerMaps); fd == nil || fd == unsafe.Pointer(&no_pointers_stackmap) {
|
||||||
// This is assembly code. Don't assume it's
|
// This is assembly code. Don't assume it's
|
||||||
// well-formed. We identify assembly code by
|
// well-formed. We identify assembly code by
|
||||||
@ -455,7 +438,6 @@ func isAsyncSafePoint(gp *g, pc, sp, lr uintptr) (bool, uintptr) {
|
|||||||
// in incrementally.
|
// in incrementally.
|
||||||
return false, 0
|
return false, 0
|
||||||
}
|
}
|
||||||
if go115RestartSeq {
|
|
||||||
switch up {
|
switch up {
|
||||||
case _PCDATA_Restart1, _PCDATA_Restart2:
|
case _PCDATA_Restart1, _PCDATA_Restart2:
|
||||||
// Restartable instruction sequence. Back off PC to
|
// Restartable instruction sequence. Back off PC to
|
||||||
@ -468,13 +450,6 @@ func isAsyncSafePoint(gp *g, pc, sp, lr uintptr) (bool, uintptr) {
|
|||||||
// Restart from the function entry at resumption.
|
// Restart from the function entry at resumption.
|
||||||
return true, f.entry
|
return true, f.entry
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
switch up {
|
|
||||||
case _PCDATA_Restart1, _PCDATA_Restart2, _PCDATA_RestartAtEntry:
|
|
||||||
// go115RestartSeq is not enabled. Treat it as unsafe point.
|
|
||||||
return false, 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true, pc
|
return true, pc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -268,14 +268,12 @@ func (f *Func) funcInfo() funcInfo {
|
|||||||
//
|
//
|
||||||
// See funcdata.h and ../cmd/internal/objabi/funcdata.go.
|
// See funcdata.h and ../cmd/internal/objabi/funcdata.go.
|
||||||
const (
|
const (
|
||||||
_PCDATA_RegMapIndex = 0 // if !go115ReduceLiveness
|
_PCDATA_UnsafePoint = 0
|
||||||
_PCDATA_UnsafePoint = 0 // if go115ReduceLiveness
|
|
||||||
_PCDATA_StackMapIndex = 1
|
_PCDATA_StackMapIndex = 1
|
||||||
_PCDATA_InlTreeIndex = 2
|
_PCDATA_InlTreeIndex = 2
|
||||||
|
|
||||||
_FUNCDATA_ArgsPointerMaps = 0
|
_FUNCDATA_ArgsPointerMaps = 0
|
||||||
_FUNCDATA_LocalsPointerMaps = 1
|
_FUNCDATA_LocalsPointerMaps = 1
|
||||||
_FUNCDATA_RegPointerMaps = 2 // if !go115ReduceLiveness
|
|
||||||
_FUNCDATA_StackObjects = 3
|
_FUNCDATA_StackObjects = 3
|
||||||
_FUNCDATA_InlTree = 4
|
_FUNCDATA_InlTree = 4
|
||||||
_FUNCDATA_OpenCodedDeferInfo = 5
|
_FUNCDATA_OpenCodedDeferInfo = 5
|
||||||
@ -284,9 +282,6 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// Only if !go115ReduceLiveness.
|
|
||||||
_PCDATA_RegMapUnsafe = _PCDATA_UnsafePointUnsafe // Unsafe for async preemption
|
|
||||||
|
|
||||||
// PCDATA_UnsafePoint values.
|
// PCDATA_UnsafePoint values.
|
||||||
_PCDATA_UnsafePointSafe = -1 // Safe for async preemption
|
_PCDATA_UnsafePointSafe = -1 // Safe for async preemption
|
||||||
_PCDATA_UnsafePointUnsafe = -2 // Unsafe for async preemption
|
_PCDATA_UnsafePointUnsafe = -2 // Unsafe for async preemption
|
||||||
|
Loading…
Reference in New Issue
Block a user