Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Places

A place is a tuple of a local and a projection.

Place Expansion

This is missing some cases

A set of places is a place expansion iff there exists a base such that:

  • is an enum type and and is a variant of
  • is a struct or tuple type and is the set of places obtained by projecting with each of the fields in the type of
  • is a reference-typed field and
  • is an array or slice and (TODO: more cases)

If there is such a , then that is unique, and is an expansion of .

Owned Places

A place is owned iff it does not project from the dereference of a reference-typed place.

Place Liveness

A place is live at a location iff there exists a location and a control flow-path from to where a place conflicting with is used at and there are no assignments of any places conflicting with along c.

Place Prefix

A place is a prefix of a place iff:

  • and have the same local, and
  • The projection of is a prefix of the projection of

Note that is a prefix of itself.

A place is a strict prefix of iff is a prefix of and .