You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add workaround for stack overflow in tree visitation when having a reduced stack size
To determine the correct specific visitation function for a syntax node,
we need to switch through a huge switch statement that covers all syntax
types. In debug builds, the cases of this switch statement do not share
stack space (rdar://55929175). Because of this, the switch statement
requires allocates about 15KB of stack space. In scenarios with reduced
stack size (in particular dispatch queues), this often results in a
stack overflow during syntax tree visitation.
To circumvent this problem, this commit moves adds a flag that moves the
retrieval of the specific visitation function to its own function. This
way, the stack frame that determines the correct visitiation function
will be popped of the stack before the function is being called, making
the switch's stack space transient instead of having it linger in the
call stack.
The workaround currently has a 50% performance decrease in release
builds, so it is only used in debug builds.
0 commit comments