-
-
Notifications
You must be signed in to change notification settings - Fork 788
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
feat: add parametrized labels to LLL #2598
feat: add parametrized labels to LLL #2598
Commits on Feb 16, 2022
-
rename get_comb_opcodes to get_lll_opcodes
get_comb_opcodes originally stood for "get combined [pseudo- and evm-] opcodes". what it really meant is get all LLL opcodes.
Configuration menu - View commit details
-
Copy full SHA for 2fcbc25 - Browse repository at this point
Copy the full SHA 2fcbc25View commit details -
change LLL labels to be parametrized
this commit forces stack items passed to labels to be explicitly named. this will help liveness analysis of stack items. note that it changes the structure of labels - instead of allowing labels to occur arbitrarily in code, they turn into blocks, enforcing scope of the named stack items.
Configuration menu - View commit details
-
Copy full SHA for 9b724aa - Browse repository at this point
Copy the full SHA 9b724aaView commit details -
Configuration menu - View commit details
-
Copy full SHA for bab7dab - Browse repository at this point
Copy the full SHA bab7dabView commit details -
Configuration menu - View commit details
-
Copy full SHA for 76b9e55 - Browse repository at this point
Copy the full SHA 76b9e55View commit details -
Configuration menu - View commit details
-
Copy full SHA for c68dd6a - Browse repository at this point
Copy the full SHA c68dd6aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9ace6fb - Browse repository at this point
Copy the full SHA 9ace6fbView commit details -
Configuration menu - View commit details
-
Copy full SHA for eefac01 - Browse repository at this point
Copy the full SHA eefac01View commit details -
Configuration menu - View commit details
-
Copy full SHA for bb0a8ad - Browse repository at this point
Copy the full SHA bb0a8adView commit details -
Configuration menu - View commit details
-
Copy full SHA for 25f4358 - Browse repository at this point
Copy the full SHA 25f4358View commit details -
Configuration menu - View commit details
-
Copy full SHA for db24a0a - Browse repository at this point
Copy the full SHA db24a0aView commit details -
Configuration menu - View commit details
-
Copy full SHA for b8d58a6 - Browse repository at this point
Copy the full SHA b8d58a6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 083b700 - Browse repository at this point
Copy the full SHA 083b700View commit details -
Configuration menu - View commit details
-
Copy full SHA for cdbb155 - Browse repository at this point
Copy the full SHA cdbb155View commit details
Commits on Feb 17, 2022
-
Configuration menu - View commit details
-
Copy full SHA for eca642f - Browse repository at this point
Copy the full SHA eca642fView commit details
Commits on Feb 18, 2022
-
Revert "move fallback in a level of nesting"
This reverts commit eca642f.
Configuration menu - View commit details
-
Copy full SHA for 954753f - Browse repository at this point
Copy the full SHA 954753fView commit details -
Configuration menu - View commit details
-
Copy full SHA for a73500a - Browse repository at this point
Copy the full SHA a73500aView commit details
Commits on Feb 21, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 9bcd3b7 - Browse repository at this point
Copy the full SHA 9bcd3b7View commit details
Commits on Feb 22, 2022
-
Revert "close out external section with jump to fallback"
This reverts commit a73500a.
Configuration menu - View commit details
-
Copy full SHA for 26e8441 - Browse repository at this point
Copy the full SHA 26e8441View commit details -
Configuration menu - View commit details
-
Copy full SHA for f3a5f7c - Browse repository at this point
Copy the full SHA f3a5f7cView commit details -
Configuration menu - View commit details
-
Copy full SHA for ccb809c - Browse repository at this point
Copy the full SHA ccb809cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0db966b - Browse repository at this point
Copy the full SHA 0db966bView commit details -
Configuration menu - View commit details
-
Copy full SHA for e4a0270 - Browse repository at this point
Copy the full SHA e4a0270View commit details -
Configuration menu - View commit details
-
Copy full SHA for 33a8612 - Browse repository at this point
Copy the full SHA 33a8612View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9ab4777 - Browse repository at this point
Copy the full SHA 9ab4777View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9d092ba - Browse repository at this point
Copy the full SHA 9d092baView commit details -
Configuration menu - View commit details
-
Copy full SHA for db39f2e - Browse repository at this point
Copy the full SHA db39f2eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 503daa2 - Browse repository at this point
Copy the full SHA 503daa2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9abf013 - Browse repository at this point
Copy the full SHA 9abf013View commit details
Commits on Feb 23, 2022
-
Configuration menu - View commit details
-
Copy full SHA for af3ceb0 - Browse repository at this point
Copy the full SHA af3ceb0View commit details -
add extra tests for returning out of loop
cases: - internal void - internal with return - external void - external with return
Configuration menu - View commit details
-
Copy full SHA for 64bc1c5 - Browse repository at this point
Copy the full SHA 64bc1c5View commit details -
feat: add parametrized labels to LLL
Change labels in LLL to be parameterized. Previously, stack items were implicitly consumed from jumpdests using `pass`, which made liveness analysis for stack items impossible in general. Since labels now take parameters, they are very similar to subroutines so we could use that terminology interchangeably. This change also enables translation to other architectures such as LLVM backends since implicit stack items cannot be handled in translation to a register machine. Lastly, this commit also added an `exit_to` instruction for LLL. This compiles the same as `goto` -- to a JUMP instruction -- but has different scoping semantics. `exit_to` terminates a subroutine while `goto` expects control flow to be returned. This is an important hint for liveness analysis. If you hit an `exit_to`, all stack items in scope must be consumed, whereas if you hit a `goto` the same requirement does not hold. In order to accomodate the semantic change, this commit changes the codegen everywhere that stack items are consumed implicitly. In practice, this happens in private functions, and in function common cleanup blocks. Note: the assembly output for all contracts I looked at were byte-for-byte the same with the exception of those which returned straight out of a loop (using the LLL `cleanup_repeat` instruction), so this commit adds a couple more tests to test returns out of loops (in the void return and external cases)
Configuration menu - View commit details
-
Copy full SHA for 2541c25 - Browse repository at this point
Copy the full SHA 2541c25View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1b1ec32 - Browse repository at this point
Copy the full SHA 1b1ec32View commit details