reflect: call ABIInternal moveMakeFuncArgPtrs on ARM64

Save some stack space, to avoid nosplit overflow in
-race -N -l build.

For #51247.

Change-Id: I7357d6227f816a612a64f55f7ca1b1384e9268e1
Reviewed-on: https://go-review.googlesource.com/c/go/+/386714
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
Cherry Mui 2022-02-17 19:28:19 -05:00
Родитель d35ed09486
Коммит 20b177268f
1 изменённых файлов: 12 добавлений и 2 удалений

Просмотреть файл

@ -33,9 +33,14 @@ TEXT ·makeFuncStub(SB),(NOSPLIT|WRAPPER),$432
ADD $LOCAL_REGARGS, RSP, R20
CALL runtime·spillArgs(SB)
MOVD R26, 32(RSP) // outside of moveMakeFuncArgPtrs's arg area
#ifdef GOEXPERIMENT_regabiargs
MOVD R26, R0
MOVD R20, R1
#else
MOVD R26, 8(RSP)
MOVD R20, 16(RSP)
CALL ·moveMakeFuncArgPtrs(SB)
#endif
CALL ·moveMakeFuncArgPtrs<ABIInternal>(SB)
MOVD 32(RSP), R26
MOVD R26, 8(RSP)
MOVD $argframe+0(FP), R3
@ -61,9 +66,14 @@ TEXT ·methodValueCall(SB),(NOSPLIT|WRAPPER),$432
ADD $LOCAL_REGARGS, RSP, R20
CALL runtime·spillArgs(SB)
MOVD R26, 32(RSP) // outside of moveMakeFuncArgPtrs's arg area
#ifdef GOEXPERIMENT_regabiargs
MOVD R26, R0
MOVD R20, R1
#else
MOVD R26, 8(RSP)
MOVD R20, 16(RSP)
CALL ·moveMakeFuncArgPtrs(SB)
#endif
CALL ·moveMakeFuncArgPtrs<ABIInternal>(SB)
MOVD 32(RSP), R26
MOVD R26, 8(RSP)
MOVD $argframe+0(FP), R3