From 9f389bf55e5c79416172a6b2294eaad4b94e3365 Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Sun, 14 Apr 2024 16:21:07 -0400 Subject: [PATCH] feat[venom]: optimize stack scheduler implement "pickaxe" optimization --- vyper/venom/venom_to_assembly.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vyper/venom/venom_to_assembly.py b/vyper/venom/venom_to_assembly.py index 41fa8888c9..457dd40fb3 100644 --- a/vyper/venom/venom_to_assembly.py +++ b/vyper/venom/venom_to_assembly.py @@ -529,6 +529,11 @@ def _generate_evm_for_instruction( if inst.output is not None: if "call" in inst.opcode and inst.output not in next_liveness: self.pop(assembly, stack) + elif inst.output in next_liveness: + # peek at next_liveness to find the next scheduled item, + # and optimistically swap with it + next_scheduled = list(next_liveness)[-1] + self.swap_op(assembly, stack, next_scheduled) return apply_line_numbers(inst, assembly)