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.From.Reg = q1.From.Reg
p.To.Type = obj.TYPE_MEM p.To.Type = obj.TYPE_MEM
p.To.Reg = REGTMP 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 */ /* MOV b, R8 */
p = obj.Appendp(p, newprog) p = obj.Appendp(p, newprog)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -312,7 +312,6 @@ type gobuf struct {
pc uintptr pc uintptr
g guintptr g guintptr
ctxt unsafe.Pointer ctxt unsafe.Pointer
ret uintptr
lr uintptr lr uintptr
bp uintptr // for framepointer-enabled architectures bp uintptr // for framepointer-enabled architectures
} }
@ -528,8 +527,7 @@ const (
type m struct { type m struct {
g0 *g // goroutine with scheduling stack g0 *g // goroutine with scheduling stack
morebuf gobuf // gobuf arg to morestack morebuf gobuf // gobuf arg to morestack
divmod uint32 // div/mod denominator for arm - known to liblink divmod uint32 // div/mod denominator for arm - known to liblink (cmd/internal/obj/arm/obj5.go)
_ uint32 // align next field to 8 bytes
// Fields not known to debuggers. // Fields not known to debuggers.
procid uint64 // for debuggers, but offset not hard-coded 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 _32bit uintptr // size on 32bit platforms
_64bit uintptr // size on 64bit 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 {runtime.Sudog{}, 56, 88}, // sudog, but exported for testing
} }