Documentation

Miri.TreeBorrows.LocationState

The state and per-location update layer from pinned Miri tree_borrows/tree.rs. This is below the allocation-wide range map and tree visitor: it keeps the initialization/accessed bit, permission, SIFA cache, and the exact permission/protector error ordering for one tree node at one location.

Transition errors emitted by the per-location layer. ProtectedDealloc belongs to the later tree-wide deallocation check.

Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        The two continuation results used by Miri's tree visitor.

        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            Per-node state at one allocation location. A false accessed bit stores the future initial permission for a location that has not yet been reached by a child pointer.

            Instances For
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  Construction failures corresponding to the source assert!s.

                  Instances For
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

                        Source new_non_accessed, with its assertions retained as explicit outcomes.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          Source new_accessed has no validity assertions.

                          Equations
                          Instances For

                            A lazy Unique state is unreachable; every other permission is possible regardless of whether its location has been accessed.

                            Equations
                            Instances For

                              Check whether any child pointer has accessed this location.

                              Equations
                              Instances For

                                Current permission or future initial permission.

                                Equations
                                Instances For

                                  Result of the tree traversal's per-node skip predicate.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For

                                    SIFA update with the source debug-assert precondition represented as a separate result.

                                    Instances For
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For

                                          Source record_new_access; callers must only record accesses whose skip-check result is Recurse.

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For

                                            Result of applying one access to one location, including the resulting state on source Err results. Miri mutates the state before returning a ProtectedDisabled error.

                                            Instances For
                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For

                                                  Apply LocationState::perform_access in source order.

                                                  Permission failure leaves the old location untouched. Otherwise the access bit and permission are updated before the protector check; thus a protected transition to Disabled is an error only if the location is now accessed.

                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For