mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
[Yul] Directly jump over a series of function definitions
Implement a AbstractAssembly::setStackHeight function Update the tests Update Changelog
This commit is contained in:
committed by
Vedant Agarwala
parent
b66950711e
commit
5d6cbd97df
@@ -277,16 +277,15 @@ BOOST_AUTO_TEST_CASE(functions_multi_return)
|
||||
let unused := 7
|
||||
})";
|
||||
BOOST_CHECK_EQUAL(assemble(in),
|
||||
"PUSH1 0xB JUMP "
|
||||
"PUSH1 0x13 JUMP "
|
||||
"JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP " // f
|
||||
"JUMPDEST PUSH1 0x17 JUMP "
|
||||
"JUMPDEST PUSH1 0x0 PUSH1 0x0 SWAP1 SWAP2 JUMP " // g
|
||||
"JUMPDEST PUSH1 0x21 PUSH1 0x2 PUSH1 0x1 PUSH1 0x3 JUMP " // f(1, 2)
|
||||
"JUMPDEST PUSH1 0x2B PUSH1 0x4 PUSH1 0x3 PUSH1 0x3 JUMP " // f(3, 4)
|
||||
"JUMPDEST PUSH1 0x1D PUSH1 0x2 PUSH1 0x1 PUSH1 0x3 JUMP " // f(1, 2)
|
||||
"JUMPDEST PUSH1 0x27 PUSH1 0x4 PUSH1 0x3 PUSH1 0x3 JUMP " // f(3, 4)
|
||||
"JUMPDEST SWAP1 POP " // assignment to x
|
||||
"POP " // remove x
|
||||
"PUSH1 0x34 PUSH1 0xF JUMP " // g()
|
||||
"JUMPDEST PUSH1 0x3A PUSH1 0xF JUMP " // g()
|
||||
"PUSH1 0x30 PUSH1 0xB JUMP " // g()
|
||||
"JUMPDEST PUSH1 0x36 PUSH1 0xB JUMP " // g()
|
||||
"JUMPDEST SWAP2 POP SWAP2 POP " // assignments
|
||||
"POP POP " // removal of y and z
|
||||
"PUSH1 0x7 POP "
|
||||
|
||||
Reference in New Issue
Block a user