]> Cypherpunks repositories - gostls13.git/commit
runtime: don't async preempt NO_LOCAL_POINTERS assembly functions
authorCherry Zhang <cherryyz@google.com>
Sun, 20 Oct 2019 21:23:02 +0000 (17:23 -0400)
committerAustin Clements <austin@google.com>
Sat, 2 Nov 2019 22:02:43 +0000 (22:02 +0000)
commit3873e5497d21979910a1ec7cf90a34577fa1f6ae
tree169399bd2e8b383891c55a3c99f9d7b7eb055c18
parent7955ecebfc85851d43913f9358fa5f6a7bbb7c59
runtime: don't async preempt NO_LOCAL_POINTERS assembly functions

We don't async preempt assembly functions. We do that by checking
whether the function has a local pointer map, and assume it is
an assembly (or, non-Go) function if there isn't one. However,
assembly functions marked with NO_LOCAL_POINTERS still have local
pointer maps, and we wouldn't identify them. For them, check for
the special pointer map runtime.no_pointers_stackmap as well, and
treat them as not async preemptible.

Change-Id: I1301e3b4d35893c31c4c5a5147a0d775987bd6f4
Reviewed-on: https://go-review.googlesource.com/c/go/+/202337
Reviewed-by: Austin Clements <austin@google.com>
src/runtime/preempt.go