You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Allocated constants are stored in the `<memory>` cell as a map
`AllocId -> Value` (by python code inserting a `#decodeAllocs`
function).
* The allocation decoder (currently) only handles allocations without a
provenance or with a single provenance entry at offset 0 when the
allocation type is a reference. Otherwise, undecoded data is stored in
raw form, in a supersort of `Value`.
* A new value constructor `AllocRef` is added, containing an `AllocId`
and reference metadata.
- This value can be `Deref`erenced like a `PtrLocal` or `Reference` if
the `<memory>` map has a `Value` entry for the given `AllocId` (will get
stuck on undecoded data).
* `AllocRef`s are created by `#decodeConstant` from `operandConstant`
operands with a single provenance map entry at offset 0 when a reference
type is expected (same restrictions as the allocation decoder above).
Otherwise `#decodeConstant` becomes a thunk.
* `AllocRef`s can be `Unsize`d, i.e., dynamic metadata added to replace
known static metadata.
* `AllocRef`s support trivial `Transmute` calls where source and target
type are the same
---------
Co-authored-by: Daniel Cumming <124537596+dkcumming@users.noreply.github.com>
0 commit comments