Warm
An object with all fields initialized but reaches objects under initialization
We need to restrict nesting levels of outer
to finitize the domain.
Value members
Concrete methods
Extension method from Semantic
Try early promotion of warm objects
Try early promotion of warm objects
Promotion is expensive and should only be performed for small classes.
-
for each concrete method
m
of the warm object: call the method and promote the result -
for each concrete field
f
of the warm object: promote the field value
If the object contains nested classes as members, the checker simply reports a warning to avoid expensive checks.
TODO: we need to revisit whether this is needed once we make the system more flexible in other dimentions: e.g. leak to methods or constructors, or use ownership for creating cold data structures.