Reuse function argument slots and defer allocation of return variable slots in EVMCodeTransform.

This commit is contained in:
Daniel Kirchner
2021-04-06 13:38:05 +02:00
parent 04a051d380
commit 4b0f8383a6
13 changed files with 337 additions and 102 deletions
@@ -12,18 +12,17 @@
// PUSH1 0xD
// JUMP
// JUMPDEST
// PUSH1 0x16
// PUSH1 0x15
// JUMP
// JUMPDEST
// POP
// POP
// PUSH1 0x0
// JUMPDEST
// SWAP3
// SWAP2
// POP
// POP
// SWAP1
// JUMP
// JUMPDEST
// PUSH1 0x20
// PUSH1 0x1F
// PUSH1 0x4
// PUSH1 0x3
// PUSH1 0xD
@@ -7,8 +7,8 @@
// PUSH1 0x8
// JUMP
// JUMPDEST
// POP
// POP
// JUMPDEST
// POP
// POP
// JUMP
// JUMPDEST
@@ -8,18 +8,17 @@
// ====
// stackOptimization: true
// ----
// PUSH1 0x11
// PUSH1 0x10
// JUMP
// JUMPDEST
// POP
// POP
// POP
// POP
// PUSH1 0x0
// PUSH1 0x0
// JUMPDEST
// SWAP5
// POP
// SWAP5
// SWAP3
// POP
// POP
// POP
// SWAP1
// SWAP2
// JUMP
// JUMPDEST
@@ -4,14 +4,18 @@
// ====
// stackOptimization: true
// ----
// PUSH1 0x1F
// PUSH1 0x1E
// JUMP
// JUMPDEST
// PUSH1 0x0
// PUSH1 0x0
// PUSH1 0x3
// SWAP4
// POP
// PUSH1 0x3
// SWAP1
// POP
// POP
// POP
// POP
// PUSH1 0x0
// PUSH1 0x0
// PUSH1 0x9
// PUSH1 0x2
// SWAP2
@@ -21,12 +25,7 @@
// MSTORE
// POP
// JUMPDEST
// SWAP5
// POP
// SWAP5
// SWAP3
// POP
// POP
// POP
// SWAP1
// SWAP2
// JUMP
// JUMPDEST
@@ -14,19 +14,19 @@
// JUMP
// JUMPDEST
// PUSH1 0x0
// DUP2
// SWAP2
// POP
// DUP1
// POP
// PUSH1 0x3
// SWAP2
// POP
// DUP2
// SWAP1
// POP
// JUMPDEST
// SWAP3
// DUP1
// SWAP2
// POP
// POP
// JUMPDEST
// SWAP1
// JUMP
// JUMPDEST
// PUSH1 0x7
@@ -10,15 +10,14 @@
// ====
// stackOptimization: true
// ----
// PUSH1 0x15
// PUSH1 0x14
// JUMP
// JUMPDEST
// POP
// POP
// PUSH1 0x0
// JUMPDEST
// SWAP3
// SWAP2
// POP
// POP
// SWAP1
// JUMP
// JUMPDEST
// PUSH1 0x0
@@ -28,13 +27,13 @@
// SWAP2
// JUMP
// JUMPDEST
// PUSH1 0x1F
// PUSH1 0x1E
// PUSH1 0x2
// PUSH1 0x1
// PUSH1 0x3
// JUMP
// JUMPDEST
// PUSH1 0x29
// PUSH1 0x28
// PUSH1 0x4
// PUSH1 0x3
// PUSH1 0x3
@@ -43,12 +42,12 @@
// SWAP1
// POP
// POP
// PUSH1 0x32
// PUSH1 0xC
// PUSH1 0x31
// PUSH1 0xB
// JUMP
// JUMPDEST
// PUSH1 0x38
// PUSH1 0xC
// PUSH1 0x37
// PUSH1 0xB
// JUMP
// JUMPDEST
// SWAP2