runtime: remove ret field from gobuf

It's not used for anything.

Change-Id: I031b3cdfe52b6b1cff4b3cb6713ffe588084542f
Reviewed-on: https://go-review.googlesource.com/c/go/+/652276
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
Keith Randall 2025-02-25 14:21:42 -08:00
parent 2e71ae33ca
commit c594762ad5
15 changed files with 3 additions and 38 deletions

View file

@ -551,7 +551,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) {
p.From.Reg = q1.From.Reg
p.To.Type = obj.TYPE_MEM
p.To.Reg = REGTMP
p.To.Offset = 8 * 4 // offset of m.divmod
p.To.Offset = 7 * 4 // offset of m.divmod
/* MOV b, R8 */
p = obj.Appendp(p, newprog)

View file

@ -291,10 +291,8 @@ TEXT gogo<>(SB), NOSPLIT, $0
get_tls(CX)
MOVL DX, g(CX)
MOVL gobuf_sp(BX), SP // restore SP
MOVL gobuf_ret(BX), AX
MOVL gobuf_ctxt(BX), DX
MOVL $0, gobuf_sp(BX) // clear to help garbage collector
MOVL $0, gobuf_ret(BX)
MOVL $0, gobuf_ctxt(BX)
MOVL gobuf_pc(BX), BX
JMP BX
@ -625,7 +623,6 @@ TEXT gosave_systemstack_switch<>(SB),NOSPLIT,$0
MOVL AX, (g_sched+gobuf_sp)(BX)
MOVL $runtime·systemstack_switch(SB), AX
MOVL AX, (g_sched+gobuf_pc)(BX)
MOVL $0, (g_sched+gobuf_ret)(BX)
// Assert ctxt is zero. See func save.
MOVL (g_sched+gobuf_ctxt)(BX), AX
TESTL AX, AX

View file

@ -412,11 +412,9 @@ TEXT gogo<>(SB), NOSPLIT, $0
MOVQ DX, g(CX)
MOVQ DX, R14 // set the g register
MOVQ gobuf_sp(BX), SP // restore SP
MOVQ gobuf_ret(BX), AX
MOVQ gobuf_ctxt(BX), DX
MOVQ gobuf_bp(BX), BP
MOVQ $0, gobuf_sp(BX) // clear to help garbage collector
MOVQ $0, gobuf_ret(BX)
MOVQ $0, gobuf_ctxt(BX)
MOVQ $0, gobuf_bp(BX)
MOVQ gobuf_pc(BX), BX
@ -828,7 +826,6 @@ TEXT gosave_systemstack_switch<>(SB),NOSPLIT|NOFRAME,$0
MOVQ R9, (g_sched+gobuf_pc)(R14)
LEAQ 8(SP), R9
MOVQ R9, (g_sched+gobuf_sp)(R14)
MOVQ $0, (g_sched+gobuf_ret)(R14)
MOVQ BP, (g_sched+gobuf_bp)(R14)
// Assert ctxt is zero. See func save.
MOVQ (g_sched+gobuf_ctxt)(R14), R9

View file

@ -226,11 +226,9 @@ TEXT gogo<>(SB),NOSPLIT|NOFRAME,$0
BL setg<>(SB)
MOVW gobuf_sp(R1), R13 // restore SP==R13
MOVW gobuf_lr(R1), LR
MOVW gobuf_ret(R1), R0
MOVW gobuf_ctxt(R1), R7
MOVW $0, R11
MOVW R11, gobuf_sp(R1) // clear to help garbage collector
MOVW R11, gobuf_ret(R1)
MOVW R11, gobuf_lr(R1)
MOVW R11, gobuf_ctxt(R1)
MOVW gobuf_pc(R1), R11
@ -550,7 +548,6 @@ TEXT gosave_systemstack_switch<>(SB),NOSPLIT|NOFRAME,$0
MOVW R13, (g_sched+gobuf_sp)(g)
MOVW $0, R11
MOVW R11, (g_sched+gobuf_lr)(g)
MOVW R11, (g_sched+gobuf_ret)(g)
// Assert ctxt is zero. See func save.
MOVW (g_sched+gobuf_ctxt)(g), R11
TST R11, R11

View file

@ -199,11 +199,9 @@ TEXT gogo<>(SB), NOSPLIT|NOFRAME, $0
MOVD R0, RSP
MOVD gobuf_bp(R5), R29
MOVD gobuf_lr(R5), LR
MOVD gobuf_ret(R5), R0
MOVD gobuf_ctxt(R5), R26
MOVD $0, gobuf_sp(R5)
MOVD $0, gobuf_bp(R5)
MOVD $0, gobuf_ret(R5)
MOVD $0, gobuf_lr(R5)
MOVD $0, gobuf_ctxt(R5)
CMP ZR, ZR // set condition codes for == test, needed by stack split
@ -985,7 +983,6 @@ TEXT gosave_systemstack_switch<>(SB),NOSPLIT|NOFRAME,$0
MOVD R0, (g_sched+gobuf_sp)(g)
MOVD R29, (g_sched+gobuf_bp)(g)
MOVD $0, (g_sched+gobuf_lr)(g)
MOVD $0, (g_sched+gobuf_ret)(g)
// Assert ctxt is zero. See func save.
MOVD (g_sched+gobuf_ctxt)(g), R0
CBZ R0, 2(PC)

View file

@ -113,10 +113,8 @@ TEXT gogo<>(SB), NOSPLIT|NOFRAME, $0
MOVV gobuf_sp(R4), R3
MOVV gobuf_lr(R4), R1
MOVV gobuf_ret(R4), R19
MOVV gobuf_ctxt(R4), REGCTXT
MOVV R0, gobuf_sp(R4)
MOVV R0, gobuf_ret(R4)
MOVV R0, gobuf_lr(R4)
MOVV R0, gobuf_ctxt(R4)
MOVV gobuf_pc(R4), R6
@ -468,7 +466,6 @@ TEXT gosave_systemstack_switch<>(SB),NOSPLIT|NOFRAME,$0
MOVV R19, (g_sched+gobuf_pc)(g)
MOVV R3, (g_sched+gobuf_sp)(g)
MOVV R0, (g_sched+gobuf_lr)(g)
MOVV R0, (g_sched+gobuf_ret)(g)
// Assert ctxt is zero. See func save.
MOVV (g_sched+gobuf_ctxt)(g), R19
BEQ R19, 2(PC)

View file

@ -107,10 +107,8 @@ TEXT gogo<>(SB), NOSPLIT|NOFRAME, $0
MOVV 0(g), R2
MOVV gobuf_sp(R3), R29
MOVV gobuf_lr(R3), R31
MOVV gobuf_ret(R3), R1
MOVV gobuf_ctxt(R3), REGCTXT
MOVV R0, gobuf_sp(R3)
MOVV R0, gobuf_ret(R3)
MOVV R0, gobuf_lr(R3)
MOVV R0, gobuf_ctxt(R3)
MOVV gobuf_pc(R3), R4
@ -424,7 +422,6 @@ TEXT gosave_systemstack_switch<>(SB),NOSPLIT|NOFRAME,$0
MOVV R1, (g_sched+gobuf_pc)(g)
MOVV R29, (g_sched+gobuf_sp)(g)
MOVV R0, (g_sched+gobuf_lr)(g)
MOVV R0, (g_sched+gobuf_ret)(g)
// Assert ctxt is zero. See func save.
MOVV (g_sched+gobuf_ctxt)(g), R1
BEQ R1, 2(PC)

View file

@ -106,10 +106,8 @@ TEXT gogo<>(SB),NOSPLIT|NOFRAME,$0
JAL runtime·save_g(SB)
MOVW gobuf_sp(R3), R29
MOVW gobuf_lr(R3), R31
MOVW gobuf_ret(R3), R1
MOVW gobuf_ctxt(R3), REGCTXT
MOVW R0, gobuf_sp(R3)
MOVW R0, gobuf_ret(R3)
MOVW R0, gobuf_lr(R3)
MOVW R0, gobuf_ctxt(R3)
MOVW gobuf_pc(R3), R4
@ -422,7 +420,6 @@ TEXT gosave_systemstack_switch<>(SB),NOSPLIT|NOFRAME,$0
MOVW R1, (g_sched+gobuf_pc)(g)
MOVW R29, (g_sched+gobuf_sp)(g)
MOVW R0, (g_sched+gobuf_lr)(g)
MOVW R0, (g_sched+gobuf_ret)(g)
// Assert ctxt is zero. See func save.
MOVW (g_sched+gobuf_ctxt)(g), R1
BEQ R1, 2(PC)

View file

@ -154,10 +154,8 @@ TEXT gogo<>(SB), NOSPLIT|NOFRAME, $0
MOVD 24(R1), R2 // restore R2
#endif
MOVD R31, LR
MOVD gobuf_ret(R5), R3
MOVD gobuf_ctxt(R5), R11
MOVD R0, gobuf_sp(R5)
MOVD R0, gobuf_ret(R5)
MOVD R0, gobuf_lr(R5)
MOVD R0, gobuf_ctxt(R5)
CMP R0, R0 // set condition codes for == test, needed by stack split
@ -561,7 +559,6 @@ TEXT gosave_systemstack_switch<>(SB),NOSPLIT|NOFRAME,$0
MOVD R31, (g_sched+gobuf_pc)(g)
MOVD R1, (g_sched+gobuf_sp)(g)
MOVD R0, (g_sched+gobuf_lr)(g)
MOVD R0, (g_sched+gobuf_ret)(g)
// Assert ctxt is zero. See func save.
MOVD (g_sched+gobuf_ctxt)(g), R31
CMP R31, $0

View file

@ -262,10 +262,8 @@ TEXT gogo<>(SB), NOSPLIT|NOFRAME, $0
MOV gobuf_sp(T0), X2
MOV gobuf_lr(T0), RA
MOV gobuf_ret(T0), A0
MOV gobuf_ctxt(T0), CTXT
MOV ZERO, gobuf_sp(T0)
MOV ZERO, gobuf_ret(T0)
MOV ZERO, gobuf_lr(T0)
MOV ZERO, gobuf_ctxt(T0)
MOV gobuf_pc(T0), T0
@ -315,7 +313,6 @@ TEXT gosave_systemstack_switch<>(SB),NOSPLIT|NOFRAME,$0
MOV X31, (g_sched+gobuf_pc)(g)
MOV X2, (g_sched+gobuf_sp)(g)
MOV ZERO, (g_sched+gobuf_lr)(g)
MOV ZERO, (g_sched+gobuf_ret)(g)
// Assert ctxt is zero. See func save.
MOV (g_sched+gobuf_ctxt)(g), X31
BEQ ZERO, X31, 2(PC)

View file

@ -193,10 +193,8 @@ TEXT gogo<>(SB), NOSPLIT|NOFRAME, $0
MOVD 0(g), R4
MOVD gobuf_sp(R5), R15
MOVD gobuf_lr(R5), LR
MOVD gobuf_ret(R5), R3
MOVD gobuf_ctxt(R5), R12
MOVD $0, gobuf_sp(R5)
MOVD $0, gobuf_ret(R5)
MOVD $0, gobuf_lr(R5)
MOVD $0, gobuf_ctxt(R5)
CMP R0, R0 // set condition codes for == test, needed by stack split
@ -522,7 +520,6 @@ TEXT gosave_systemstack_switch<>(SB),NOSPLIT|NOFRAME,$0
MOVD R1, (g_sched+gobuf_pc)(g)
MOVD R15, (g_sched+gobuf_sp)(g)
MOVD $0, (g_sched+gobuf_lr)(g)
MOVD $0, (g_sched+gobuf_ret)(g)
// Assert ctxt is zero. See func save.
MOVD (g_sched+gobuf_ctxt)(g), R1
CMPBEQ R1, $0, 2(PC)

View file

@ -51,11 +51,9 @@ TEXT runtime·gogo(SB), NOSPLIT, $0-8
I64Load gobuf_pc(R0)
I64Store $0
MOVD gobuf_ret(R0), RET0
MOVD gobuf_ctxt(R0), CTXT
// clear to help garbage collector
MOVD $0, gobuf_sp(R0)
MOVD $0, gobuf_ret(R0)
MOVD $0, gobuf_ctxt(R0)
I32Const $1

View file

@ -4399,7 +4399,6 @@ func save(pc, sp, bp uintptr) {
gp.sched.pc = pc
gp.sched.sp = sp
gp.sched.lr = 0
gp.sched.ret = 0
gp.sched.bp = bp
// We need to ensure ctxt is zero, but can't have a write
// barrier here. However, it should always already be zero.

View file

@ -312,7 +312,6 @@ type gobuf struct {
pc uintptr
g guintptr
ctxt unsafe.Pointer
ret uintptr
lr uintptr
bp uintptr // for framepointer-enabled architectures
}
@ -528,8 +527,7 @@ const (
type m struct {
g0 *g // goroutine with scheduling stack
morebuf gobuf // gobuf arg to morestack
divmod uint32 // div/mod denominator for arm - known to liblink
_ uint32 // align next field to 8 bytes
divmod uint32 // div/mod denominator for arm - known to liblink (cmd/internal/obj/arm/obj5.go)
// Fields not known to debuggers.
procid uint64 // for debuggers, but offset not hard-coded

View file

@ -20,7 +20,7 @@ func TestSizeof(t *testing.T) {
_32bit uintptr // size on 32bit platforms
_64bit uintptr // size on 64bit platforms
}{
{runtime.G{}, 280, 440}, // g, but exported for testing
{runtime.G{}, 276, 432}, // g, but exported for testing
{runtime.Sudog{}, 56, 88}, // sudog, but exported for testing
}