comparison src/testdir/test_vim9_disassemble.vim @ 26729:b969fdb8cd46 v8.2.3893

patch 8.2.3893: Vim9: many local variables are initialized with an instruction Commit: https://github.com/vim/vim/commit/5cd647935d0834b3064aa36384b8f6730fadadd6 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Dec 25 18:23:24 2021 +0000 patch 8.2.3893: Vim9: many local variables are initialized with an instruction Problem: Vim9: many local variables are initialized with an instruction. Solution: Initialize local variables to zero to avoid the instructions.
author Bram Moolenaar <Bram@vim.org>
date Sat, 25 Dec 2021 19:30:03 +0100
parents e16806237a70
children 47ad45fb433a
comparison
equal deleted inserted replaced
26728:71ae885c1426 26729:b969fdb8cd46
1771 enddef 1771 enddef
1772 1772
1773 def ReturnBool(): bool 1773 def ReturnBool(): bool
1774 var one = 1 1774 var one = 1
1775 var zero = 0 1775 var zero = 0
1776 var none: number
1776 var name: bool = one && zero || one 1777 var name: bool = one && zero || one
1777 return name 1778 return name
1778 enddef 1779 enddef
1779 1780
1780 def Test_disassemble_return_bool() 1781 def Test_disassemble_return_bool()
1781 var instr = execute('disassemble ReturnBool') 1782 var instr = execute('disassemble ReturnBool')
1782 assert_match('ReturnBool\_s*' .. 1783 assert_match('ReturnBool\_s*' ..
1783 'var one = 1\_s*' .. 1784 'var one = 1\_s*' ..
1784 '0 STORE 1 in $0\_s*' .. 1785 '0 STORE 1 in $0\_s*' ..
1785 'var zero = 0\_s*' .. 1786 'var zero = 0\_s*' ..
1786 '1 STORE 0 in $1\_s*' .. 1787 'var none: number\_s*' ..
1787 'var name: bool = one && zero || one\_s*' .. 1788 'var name: bool = one && zero || one\_s*' ..
1788 '2 LOAD $0\_s*' .. 1789 '1 LOAD $0\_s*' ..
1789 '3 COND2BOOL\_s*' .. 1790 '2 COND2BOOL\_s*' ..
1790 '4 JUMP_IF_COND_FALSE -> 7\_s*' .. 1791 '3 JUMP_IF_COND_FALSE -> 6\_s*' ..
1791 '5 LOAD $1\_s*' .. 1792 '4 LOAD $1\_s*' ..
1792 '6 COND2BOOL\_s*' .. 1793 '5 COND2BOOL\_s*' ..
1793 '7 JUMP_IF_COND_TRUE -> 10\_s*' .. 1794 '6 JUMP_IF_COND_TRUE -> 9\_s*' ..
1794 '8 LOAD $0\_s*' .. 1795 '7 LOAD $0\_s*' ..
1795 '9 COND2BOOL\_s*' .. 1796 '8 COND2BOOL\_s*' ..
1796 '10 STORE $2\_s*' .. 1797 '9 STORE $3\_s*' ..
1797 'return name\_s*' .. 1798 'return name\_s*' ..
1798 '\d\+ LOAD $2\_s*' .. 1799 '\d\+ LOAD $3\_s*' ..
1799 '\d\+ RETURN', 1800 '\d\+ RETURN',
1800 instr) 1801 instr)
1801 assert_equal(true, InvertBool()) 1802 assert_equal(true, InvertBool())
1802 enddef 1803 enddef
1803 1804