-
Notifications
You must be signed in to change notification settings - Fork 471
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
Reduce the number of calls to the SMT solver in EVM #2411
Changes from all commits
4bdf078
59414ee
cd87fd7
327de5e
ce843c1
64b0aab
3d85003
b42b52c
be76af3
c44cd48
2b86fbf
dc9af4e
81e22cb
a572c33
29ff05b
3b02fe2
5c44429
19a929e
6728a5d
982349e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -658,7 +658,7 @@ def save_constraints(testcase, state: StateBase): | |
@staticmethod | ||
def save_input_symbols(testcase, state: StateBase): | ||
with testcase.open_stream("input") as f: | ||
for symbol in state.input_symbols: | ||
bufs = state.solve_one_n_batched(state.input_symbols) | ||
for symbol, buf in zip(state.input_symbols, bufs): | ||
# TODO - constrain=False here, so the extra migration shouldn't cause problems, right? | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this comment might need to be moved to right before the Or maybe just removed? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not 100% sure about that comment. Do you know what it means? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't know exactly, but I think it's referencing the default argument |
||
buf = state.solve_one(symbol) | ||
f.write(f"{symbol.name}: {buf!r}\n") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It might be worth documenting that when
constrain=True
, the order of the expressions passed in could matter.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To be honest, I haven't look on that parameter and I haven't change how other code call this. If you say this is expected behavior, I will modify the comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right, this is the expected behavior, but the comment makes no mention of it. This could be confusing to users because if you call
solve_one_n_batched
with contradictory constraints inexprs
, which expressions areunsat
will depend on which ones are solved first. It's been that way for as long as I can remember, so this is just a "as long as you're editing this function anyway..." suggestion