Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Stop looking for initializations at any GC point
All null initializations of autos that might hold references to heapified objects must happen in the entry block to the method before any potential GC point or point at which an exception might be thrown. The code that finds autos that have already been initialized in the entry block and adds them to _initializedHeapifiedTemps would stop when it encountered the first point in the entry block that might raise an exception. However, it failed to take into account potential GC points in the entry block. This change halts adding entries to _initializedHeapifiedTemps when it encounters a GC point in the entry block. This change further restricts the set of autos that are added to _initializedHeapifiedTemps to those that actually have a null reference - that is, an aconst of zero - stored to them in the entry block. Other values would likely be acceptable, but just out of a sense of caution, we'll restrict this to just those that are explicitly zero initialized. Finally, this change includes some additional comments describing the logic around how _initializedHeapifiedTemps is set up. Signed-off-by: Henry Zongaro <[email protected]>
- Loading branch information