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

Support joins during runtime check collection across branches #14

Open
hgouni opened this issue Jul 11, 2021 · 2 comments
Open

Support joins during runtime check collection across branches #14

hgouni opened this issue Jul 11, 2021 · 2 comments
Labels
enhancement New feature or request

Comments

@hgouni
Copy link
Contributor

hgouni commented Jul 11, 2021

Silicon supports joining branches with pure bodies during program execution, as an optimization over separately symbolically executing each branch. The collection of runtime checks requires, for each generated check, precise information about the path taken through the program for that check. Joining branches would require branching information to be separately tracked by (or alongside) the runtime check synthesizer. We should figure out a way to track branching information while both collecting runtime checks and supporting joins.

@jennalwise jennalwise added the enhancement New feature or request label Jul 19, 2021
@jennalwise
Copy link
Member

The rule for "unfolding in" expressions in Viper also relies on joins, so this may be important for this as well. Reducing the number of branches with join will improve Gradual Viper performance and if run-time checks could match, then likely performance in the C0 frontend could also be improved.

@jennalwise
Copy link
Member

jennalwise commented Apr 30, 2022

Consume originally consumed pure conditionals (conditionals that do not refer to heap locations) in eval using evalAndAssert. However, the case for pure conditionals in eval was removed, because the only thing it did differently for consume was to use joins, which we do not support. The case for impure conditionals in consume now applies to all conditionals no matter what. It seems the only downside is the performance losses from joins for the pure case.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants