Lines Matching full:region
2 Region Store
10 "base region + offset" key. (This allows ``*p`` and ``p[0]`` to map to the same
14 the same base region". This allows certain operations to be more efficient,
18 keys store both the original region, and the "concrete offset region" -- the
19 last region whose offset is entirely concrete. (For example, in the expression
20 ``foo.bar[1][i].baz``, the concrete offset region is the array ``foo.bar[1]``,
37 because ``foo[i]`` may have overwritten it! Thus, *binding to a region with a
38 symbolic offset invalidates the entire concrete offset region.* We know
51 because ``foo[0]`` may have overwritten it! *Binding to a region R with a
53 region is a super-region **or** sub-region of R.* All we know about ``foo[i]``
55 might change ``foo[i]``, and changing *all* of ``foo`` (or its base region) will
59 cost of speed. The latter case could also be improved by matching region kinds,
71 fields, they are not base regions, and when their parent object region is
80 Consequently, although the base region of an ObjCIvarRegion is the entire
83 offsets start from the base region!
86 Region Invalidation
89 Unlike binding invalidation, region invalidation occurs when the entire
90 contents of a region may have changed---say, because it has been passed to a
93 need to throw away not just all bindings within the region itself, but within
97 Region invalidation typically does even more than this, however. Because it
98 usually represents the complete escape of a region from the analyzer's model,
99 its *contents* must also be transitively invalidated. (For example, if a region
119 When there is no Direct binding for a particular region, the store manager
120 looks at each super-region in turn to see if there is a Default binding. If so,
121 this value is used as the value of the original region. The search ends when
122 the base region is reached, at which point the RegionStore will pick an
123 appropriate default value for the region (usually a symbolic value, but
137 NOTE: The fact that bindings are stored as a base region plus an offset limits
155 Under the hood, a LazyCompoundVal is implemented as a uniqued pair of (region,
156 store), representing "the value of the region during this 'snapshot' of the
167 LazyCompoundVal region, and look up *that* region in the previous store.
181 // Because it's a LCV, we look at our requested region