]> Cypherpunks repositories - gostls13.git/commitdiff
reflect: call ABIInternal moveMakeFuncArgPtrs on ARM64
authorCherry Mui <cherryyz@google.com>
Fri, 18 Feb 2022 00:28:19 +0000 (19:28 -0500)
committerCherry Mui <cherryyz@google.com>
Fri, 18 Feb 2022 18:46:19 +0000 (18:46 +0000)
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>
src/reflect/asm_arm64.s

index 5b9b3573fa2a7e721e482cfe61b91dbf25552e62..812b8a02c3708e37206fd735397020fc8ac09a44 100644 (file)
@@ -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