Subject: Re: bug#23019: parse-partial-sexp doesn't output the full state needed for its continuance.

From: Stefan Monnier <[email-masked]>
Date: Fri, 18 Mar 2016 15:40:34 -0400

> I didn't give all that much thought to it.  With a "local" state,
> state.field will be addressed as a constant offset from the stack frame
> base register.  With a "remote" state, state->field will be addressed as
> a constant offset from some address register.  Provided the processor
> has enough registers available, it shouldn't make a difference.  But on
> an architecture with a restricted set of registers (?old 80x86), it might
> make things slower if an address register needs to be repeatedly loaded,
> or even repeatedly stacked around function calls.

That was my first reaction as well.  But my other self was telling me "I
can't say why, but my gut feeling says that this code is "cleaner"
and should hence be easier to optimize".

> So, at least on my machine, the "indirect" version is faster, by
> around 1%.  Not a great difference, but I'm surprised by the way
> it went.

Thanks for the test.  As expected, it's a wash, but it's good to confirm
that the cleaner version is at least no slower,

        Stefan