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
Previously these were incrementally populated (assigning each field in turn); the zero init
was skipped because it is technically redundant. However, this prevents symex (and perhaps other
analyses) from propagating useful information, as the first write appears to be a partial update
on top of uninitialised data, and each subsequent write is based on its predecessor. Hence objects
produced by the factory end up represented as a stack of WITH operations, ultimately based on an
undefined symbol (e.g. dynamic_object1#0).
With this change symex becomes able to constant propagate the initial object, reducing equation
complexity, and objects that don't have any fields to nondet initialise can potentially be constant-
propagated throughout their lifetime.
0 commit comments