]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.regabi] runtime: stub out spillArgs and unspillArgs
authorMichael Anthony Knyszek <mknyszek@google.com>
Tue, 16 Feb 2021 20:15:13 +0000 (20:15 +0000)
committerMichael Knyszek <mknyszek@google.com>
Tue, 16 Feb 2021 20:42:26 +0000 (20:42 +0000)
Currently these two functions assume that constants in internal/abi are
set correctly, but we actually just made them zero if
GOEXPERIMENT_REGABI is set. This means reflectcall is broken. Fix it by
stubbing out these routines even if GOEXPERIMENT_REGABI is set.

Change-Id: I4c8df6d6af28562c5bb7b85f48c03d37daa9ee0d
Reviewed-on: https://go-review.googlesource.com/c/go/+/292650
Reviewed-by: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Michael Knyszek <mknyszek@google.com>

src/runtime/asm_amd64.s

index 5e1ed9b2ad8e8d098824aefc28c8b767aec71035..05422c9699c45640efe3583662e88f80fd91b7c6 100644 (file)
@@ -445,7 +445,10 @@ TEXT runtime·morestack_noctxt(SB),NOSPLIT,$0
        MOVL    $0, DX
        JMP     runtime·morestack(SB)
 
-#ifdef GOEXPERIMENT_REGABI
+// REFLECTCALL_USE_REGABI is not defined. It must be defined in conjunction with the
+// register constants in the internal/abi package.
+
+#ifdef REFLECTCALL_USE_REGABI
 // spillArgs stores return values from registers to a *internal/abi.RegArgs in R12.
 TEXT spillArgs<>(SB),NOSPLIT,$0-0
        MOVQ AX, 0(R12)