simplify interpreter-stacktraces code (#34019)
The unwinder and debuggers thought that our assembly code here was not
quite correct. Rather than attempt to fix that, let the compiler
generate it so we don't need to maintain it anymore.
This was previously also not particularly optimal for an interpreter to
need a couple extra function calls (by indirect pointer too) to setup
the call frame, so now we avoid that.
This simplifies the design by adding a new flag bit to the existing
pgcstack frames. In the future, we may end up generalizing this support
to handle stack allocation of arbitrary objects, but for now we
implement just enough support for our current needs.
It's unclear why dbghelp StackWalk glitches here a couple times (it is
reporting the stack pointer instead of the instruction pointer as the
return address), but this design is robust against that now (even though
I've manually verified that that particular glitch still happens with
this patch).
fix #33877