Thanks much for the info.

Do you have any more pointers about how one may assess whether or ensure
that a stack overflow check
is not necessary in order to safely use this directive?

Scott


On Fri, 5 Oct 2018 at 23:26, Ian Lance Taylor <i...@golang.org> wrote:

> On Fri, Oct 5, 2018 at 2:10 PM, Scott Cotton <w...@iri-labs.com> wrote:
> >
> > I have for the longest time thought of "go:nosplit" as a runtime-specific
> > thing which wasn't available to arbitrary package authors.
> >
> > Then, I found this from "go doc compile"
> >
> > ```
> > //go:nosplit
> >
> > The //go:nosplit directive specifies that the next function declared in
> the
> > file must not include a stack overflow check. This is most commonly used
> by
> > low-level runtime sources invoked at times when it is unsafe for the
> calling
> > goroutine to be preempted.
> > ```
> >
> > I am interested in knowing
> > 1. Can it indeed be used in arbitrary packages?
>
> Yes.
>
> > 2. Does it indeed prevent the emission/addition of pre-emption
> instructions
> > in the function it annotates?
>
> Well, yes and no.  What it does is disable the stack overflow check at
> function entry.  At present the stack overflow check is also used  as
> a goroutine-preemption check.  So disabling the stack overflow check
> disables the goroutine-preemption check at function entry.  And in Go
> 1.11 that is the only preemption check, so in Go 1.11 go:nosplit does
> indeed disable preemption for a function.  But there are no promises
> that there will never be any other sort of preemption check.  In fact
> we definitely do want to add other preemption checks that occur at
> points other than function entry (issues #10958, #24543).  And if
> there is another preemption check, there are no promises that
> go:nosplit will disable that check.
>
> > 3. Can it be used with gccgo?
>
> Yes.
>
> Ian
>


-- 
Scott Cotton
http://www.iri-labs.com

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to