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

Step execution from suspended state #74

Closed
wants to merge 4 commits into from

Conversation

vikraman
Copy link
Contributor

Fixes #72

vikraman and others added 4 commits August 13, 2020 01:30
This approach type checks and seems like it could work, but it is difficult to
know until we try it on an example.  We are assuming that:

1. When the simulator issues a call to our override, it pushes a `VFFEnd` frame
   onto the execution tree.  This contains the directions on how to return to
   the caller (e.g., what return type is expected and what statements remain to execute).
2. From our override, we only know how to return Unit, which we prove to the
   type checker by pattern matching on the return type repr.  The other cases
   will be errors (hopefully with better reporting than calling `error`)
travitch added a commit that referenced this pull request Dec 29, 2020
…frame

This change completes Vikraman's sketch of the functionality.  It:

- Removes the error calls (replacing them with logging)
- Simplifies the single stepping implementation
- Redesigns the symbolic execution state management and rendering

The issue with the state management was that symbolic execution state was
duplicated between the core and the brick UI in a way that allowed them to get
out of sync.  This mean that changes to the core state (e.g., as users advance
the suspended state via commands) were not reflected in the UI (as the UI state
was stale).  To fix this, all updates to the symbolic execution state now go
through a new distinguished message (the handler for which applies the update).
This allows the frontends to apply additional processing to observe all of these
updates and regenerate the UI state whenever there is a relevant update.  This
also simplifies the symbolic execution widget, which now only returns its own
updated state (and handles any state updates via message passing).

Some other changes included with this change:
- There is an option for adding calling context information for generated log entries
- Extracts the core symbolic execution state handlers and puts them back into
the core where they belong
- Make symbolic execution session state updates safer (remove mergeSessionState)

Closes #74 (integrated with these changes)
@travitch travitch mentioned this pull request Dec 29, 2020
@travitch travitch closed this in 81992dd Dec 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Execution stepping from the suspended state
2 participants