The permission-selection policy in pinned Miri's NewPermission::new.
Rust type/layout facts and interpreter configuration are explicit inputs; this
module does not model rustc type queries, pointer checks, or the full retag
caller.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
@[instance_reducible]
- Mutable : ReferenceKind
- Box : ReferenceKind
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
@[instance_reducible]
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
@[instance_reducible]
Equations
@[instance_reducible]
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
@[instance_reducible]
@[instance_reducible]
- freezePermission : Permission
- nonfreezePermission : Permission
- outsidePermission : Permission
- protector : Option ProtectorKind
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- Miri.TreeBorrows.RetagPolicy.instDecidableEqPart x✝ y✝ = if h : Miri.TreeBorrows.RetagPolicy.Part.ctorIdx✝ x✝ = Miri.TreeBorrows.RetagPolicy.Part.ctorIdx✝ y✝ then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
def
Miri.TreeBorrows.RetagPolicy.create
(facts : TypeFacts)
(kind : ReferenceKind)
(mode : RetagMode)
(config : PolicyConfig)
:
Source NewPermission::new policy, with the rustc type queries and
#[rustc_no_writable] lookup supplied as finite inputs.
None covers both disabled retagging and the source's mutable/Box pinning
early return. Other interpreter operations around reborrowing remain outside
this policy function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The source tb_reborrow closure selecting its permission for a frozen or
UnsafeCell byte and constructing the matching accessed/future location state.
The freeze-sensitive layout visitor that chooses frozen is a separate hook.
- protectedReservedIM : InitialStateError
- invalidLazyPermission (permission : Permission) : InitialStateError
- lazyUnique : InitialStateError
Instances For
def
Miri.TreeBorrows.RetagPolicy.instDecidableEqInitialStateError.decEq
(x✝ x✝¹ : InitialStateError)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
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
theorem
Miri.TreeBorrows.RetagPolicy.none_mode_never_creates_permission
(facts : TypeFacts)
(kind : ReferenceKind)
(config : PolicyConfig)
:
theorem
Miri.TreeBorrows.RetagPolicy.pinned_mutable_reference_is_not_retagged
(facts : TypeFacts)
(config : PolicyConfig)
(h : (!(facts.isUnpin && facts.isUnsafeUnpin)) = true)
:
theorem
Miri.TreeBorrows.RetagPolicy.pinned_box_is_not_retagged
(facts : TypeFacts)
(config : PolicyConfig)
(h : (!(facts.isUnpin && facts.isUnsafeUnpin)) = true)
:
theorem
Miri.TreeBorrows.RetagPolicy.unique_reborrow_starts_accessed :
initialLocationState
{ freezePermission := Permission.Unique, nonfreezePermission := Permission.Unique,
outsidePermission := Permission.ReservedFrz false, protector := none }
true = Except.ok
{ permission := Permission.Unique, accessed := true, idempotentForeignAccess := IdempotentForeignAccess.None }