diff options
| author | Chressie Himpel <chressie@google.com> | 2023-05-05 14:17:38 +0000 |
|---|---|---|
| committer | Chressie Himpel <chressie@google.com> | 2023-05-05 14:37:29 +0000 |
| commit | 72c33a5ef0eea8663328375d9d339ed150310ebb (patch) | |
| tree | a4272daf751239fcb9b2f1b8e1730800629f738c /src/runtime/asm_mipsx.s | |
| parent | f379e78951a405e7e99a60fb231eeedbf976c108 (diff) | |
| download | go-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_mipsx.s')
| -rw-r--r-- | src/runtime/asm_mipsx.s | 32 |
1 files changed, 4 insertions, 28 deletions
diff --git a/src/runtime/asm_mipsx.s b/src/runtime/asm_mipsx.s index 49f96044c4..fc81e76354 100644 --- a/src/runtime/asm_mipsx.s +++ b/src/runtime/asm_mipsx.s @@ -459,23 +459,13 @@ g0: TEXT ·cgocallback(SB),NOSPLIT,$12-12 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. - MOVW fn+0(FP), R5 - BNE R5, loadg - // Restore the g from frame. - MOVW frame+4(FP), g - JMP dropm - -loadg: // Load m and g from thread-local storage. MOVB runtime·iscgo(SB), R1 BEQ R1, nocgo JAL runtime·load_g(SB) nocgo: - // 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 @@ -488,7 +478,7 @@ nocgo: needm: MOVW g, savedm-4(SP) // g is zero, so is m. - MOVW $runtime·needAndBindM(SB), R4 + MOVW $runtime·needm(SB), R4 JAL (R4) // Set m->sched.sp = SP, so that if a panic happens @@ -559,24 +549,10 @@ havem: MOVW savedsp-12(SP), R2 // must match frame size MOVW R2, (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. MOVW savedm-4(SP), R3 BNE R3, droppedm - - // Skip dropm to reuse it in the next call, when a pthread key has been created. - MOVW _cgo_pthread_key_created(SB), R3 - // It means cgo is disabled when _cgo_pthread_key_created is a nil pointer, need dropm. - BEQ R3, dropm - MOVW (R3), R3 - BNE R3, droppedm - -dropm: MOVW $runtime·dropm(SB), R4 JAL (R4) droppedm: |
