Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mir.Intrinsics: Don't pass SimState when SymGlobalState/IntrinsicTypes will suffice #1106

Merged
merged 2 commits into from
Aug 22, 2023

Conversation

RyanGlScott
Copy link
Contributor

This makes it possible to call into the crucible-mir memory model without needing access to a full-blown SimState, which is sometimes not available in SAW contexts.

Fixes #1105.

RyanGlScott and others added 2 commits August 22, 2023 15:19
…s will suffice

This makes it possible to call into the `crucible-mir` memory model without
needing access to a full-blown `SimState`, which is sometimes not available in
SAW contexts.

Fixes #1105.
…ality

Much of the memory model–related functionality in `Mir.Intrinsics` is defined
in terms of `FancyMuxTree`s, which are somewhat clunky to manipulate outside of
`crucible-mir`. `Mir.Intrinsics` does provide some wrapper functions to
encapsulate the `FancyMuxTree` manipulation, but these typically live in the
`OverrideSim` monad, which is more specific than we want for SAW's needs. This
patch adds `IO` wrappers alongside the `OverrideSim` wrappers to make it more
straightforward to use them in SAW.
Copy link
Contributor

@bboston7 bboston7 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

@RyanGlScott RyanGlScott merged commit c19fc2c into master Aug 22, 2023
31 checks passed
@RyanGlScott RyanGlScott deleted the T1105 branch August 22, 2023 23:31
RyanGlScott added a commit that referenced this pull request Aug 31, 2023
A follow-up to #1105/#1106. I found myself needing `subanyMirRefIO`,
`subfieldMirRefIO`, and `subjustMirRefIO` in an upcoming SAW patch, but to
avoid having to make a bunch of little patches each time I need more things
from the `crucible-mir` memory model, I opted to define `*IO` functions for
each memory model operation that performs side effects. After this patch, it
should be straightforward to call anything in the `crucible-mir` memory model
without too much trouble.
RyanGlScott added a commit that referenced this pull request Aug 31, 2023
…1107)

A follow-up to #1105/#1106. I found myself needing `subanyMirRefIO`,
`subfieldMirRefIO`, and `subjustMirRefIO` in an upcoming SAW patch, but to
avoid having to make a bunch of little patches each time I need more things
from the `crucible-mir` memory model, I opted to define `*IO` functions for
each memory model operation that performs side effects. After this patch, it
should be straightforward to call anything in the `crucible-mir` memory model
without too much trouble.
RyanGlScott added a commit that referenced this pull request Feb 1, 2024
RyanGlScott added a commit that referenced this pull request Feb 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
MIR Issues relating to Rust/MIR support technical debt
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Mir.Intrinsics functions use SimState when SymGlobalState/IntrinsicTypes would suffice
2 participants