Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
(Re)move some GC pushes to be defensive about JuliaLang#35708 (JuliaL…
…ang#38355) Somebody sent me a (Julia 1.4) trace that turned out to have the same root cause as JuliaLang#35708. I took a look around just to be sure that there was no other instance of this pattern and while I didn't see any, I did see a useless push/pull pair as well as a GC_PUSH of an unitialized struct. While neither are a problem by themselves, they will prevent the GC analyzer from giving an error if any of the function in between ever become safepoints (since the GC analyzer doesn't track initilized-ness). I think it as a rule of thumb, we should never push uninitialized values into a GC frame. Doing so assumes that there are no safepoints before the value is fully initialized, but if that is the case, the GC_PUSH may also be delayed until after initialization and if the assumption ever changes, at least the GC analyzer will catch it.
- Loading branch information