aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/asm_arm64.s
diff options
context:
space:
mode:
authorChressie Himpel <chressie@google.com>2023-05-05 14:17:38 +0000
committerChressie Himpel <chressie@google.com>2023-05-05 14:37:29 +0000
commit72c33a5ef0eea8663328375d9d339ed150310ebb (patch)
treea4272daf751239fcb9b2f1b8e1730800629f738c /src/runtime/asm_arm64.s
parentf379e78951a405e7e99a60fb231eeedbf976c108 (diff)
downloadgo-72c33a5ef0eea8663328375d9d339ed150310ebb.tar.xz
Revert "runtime/cgo: store M for C-created thread in pthread key"
This reverts CL 485500. Reason for revert: This breaks internal tests at Google, see b/280861579 and b/280820455. Change-Id: I426278d400f7611170918fc07c524cb059b9cc55 Reviewed-on: https://go-review.googlesource.com/c/go/+/492995 Reviewed-by: Cherry Mui <cherryyz@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Chressie Himpel <chressie@google.com>
Diffstat (limited to 'src/runtime/asm_arm64.s')
-rw-r--r--src/runtime/asm_arm64.s32
1 files changed, 4 insertions, 28 deletions
diff --git a/src/runtime/asm_arm64.s b/src/runtime/asm_arm64.s
index 5cce33d7fe..6fe04a6445 100644
--- a/src/runtime/asm_arm64.s
+++ b/src/runtime/asm_arm64.s
@@ -1015,20 +1015,10 @@ nosave:
TEXT ·cgocallback(SB),NOSPLIT,$24-24
NO_LOCAL_POINTERS
- // Skip cgocallbackg, just dropm when fn is nil, and frame is the saved g.
- // It is used to dropm while thread is exiting.
- MOVD fn+0(FP), R1
- CBNZ R1, loadg
- // Restore the g from frame.
- MOVD frame+8(FP), g
- B dropm
-
-loadg:
// Load g from thread-local storage.
BL runtime·load_g(SB)
- // If g is nil, Go did not create the current thread,
- // or if this thread never called into Go on pthread platforms.
+ // If g is nil, Go did not create the current thread.
// Call needm to obtain one for temporary use.
// In this case, we're running on the thread stack, so there's
// lots of space, but the linker doesn't know. Hide the call from
@@ -1041,7 +1031,7 @@ loadg:
needm:
MOVD g, savedm-8(SP) // g is zero, so is m.
- MOVD $runtime·needAndBindM(SB), R0
+ MOVD $runtime·needm(SB), R0
BL (R0)
// Set m->g0->sched.sp = SP, so that if a panic happens
@@ -1122,24 +1112,10 @@ havem:
MOVD savedsp-16(SP), R4
MOVD R4, (g_sched+gobuf_sp)(g)
- // If the m on entry was nil, we called needm above to borrow an m,
- // 1. for the duration of the call on non-pthread platforms,
- // 2. or the duration of the C thread alive on pthread platforms.
- // If the m on entry wasn't nil,
- // 1. the thread might be a Go thread,
- // 2. or it's wasn't the first call from a C thread on pthread platforms,
- // since the we skip dropm to resue the m in the first call.
+ // If the m on entry was nil, we called needm above to borrow an m
+ // for the duration of the call. Since the call is over, return it with dropm.
MOVD savedm-8(SP), R6
CBNZ R6, droppedm
-
- // Skip dropm to reuse it in the next call, when a pthread key has been created.
- MOVD _cgo_pthread_key_created(SB), R6
- // It means cgo is disabled when _cgo_pthread_key_created is a nil pointer, need dropm.
- CBZ R6, dropm
- MOVD (R6), R6
- CBNZ R6, droppedm
-
-dropm:
MOVD $runtime·dropm(SB), R0
BL (R0)
droppedm: