Denys Vlasenko [Fri, 14 Dec 2018 16:51:17 +0000 (17:51 +0100)]
bc: convert macro bc_parse_push() to function, add debug infrastructure
function old new delta
bc_parse_push - 14 +14
zbc_parse_else 132 134 +2
bc_parse_pushName 63 61 -2
zbc_parse_operator 174 170 -4
bc_parse_number 87 83 -4
zbc_parse_string 97 89 -8
bc_parse_pushIndex 68 60 -8
zbc_parse_endBody 339 326 -13
zbc_parse_name 401 387 -14
zdc_parse_mem 107 91 -16
zdc_parse_expr 680 638 -42
zbc_parse_stmt 1502 1456 -46
bc_parse_expr_empty_ok 1838 1788 -50
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/11 up/down: 16/-207) Total: -191 bytes
text data bss dec hex filename
980129 485 7296 987910 f1306 busybox_old
979938 485 7296 987719 f1247 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 16:01:56 +0000 (17:01 +0100)]
bc: rename zbc_parse_text() to ..._init(), reuse existing code for library parsing
function old new delta
zbc_parse_text_init - 123 +123
bc_vm_run 423 398 -25
zbc_parse_text 123 - -123
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/1 up/down: 123/-148) Total: -25 bytes
text data bss dec hex filename
980154 485 7296 987935 f131f busybox_old
980129 485 7296 987910 f1306 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 15:48:34 +0000 (16:48 +0100)]
bc: compress two constant arguments of bc_lex_assign() to one
function old new delta
zbc_program_num 836 835 -1
bc_lex_assign 34 31 -3
zbc_lex_next 1930 1880 -50
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-54) Total: -54 bytes
text data bss dec hex filename
980208 485 7296 987989 f1355 busybox_old
980154 485 7296 987935 f131f busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 15:30:56 +0000 (16:30 +0100)]
bc: remove stale comment, empty lines, regularize comment style
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 15:24:01 +0000 (16:24 +0100)]
bc: tweak bc_num_parseDecimal() for readability, logic is not changed
function old new delta
zbc_program_num 836 835 -1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 10:27:09 +0000 (11:27 +0100)]
bc: shrink s() in library again
function old new delta
bc_lib 1596 1586 -10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-10) Total: -10 bytes
text data bss dec hex filename
980152 485 7296 987933 f131d busybox_old
980142 485 7296 987923 f1313 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 10:00:23 +0000 (11:00 +0100)]
bc: yet another library shrink
function old new delta
bc_lib 1604 1596 -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-8) Total: -8 bytes
text data bss dec hex filename
980160 485 7296 987941 f1325 busybox_old
980152 485 7296 987933 f131d busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 09:10:37 +0000 (10:10 +0100)]
bc: shrink internal library yet more
function old new delta
bc_lib 1609 1604 -5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-5) Total: -5 bytes
text data bss dec hex filename
980165 485 7296 987946 f132a busybox_old
980160 485 7296 987941 f1325 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 08:53:50 +0000 (09:53 +0100)]
bc: shrink internal library more
function old new delta
bc_lib 1618 1609 -9
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 00:01:01 +0000 (01:01 +0100)]
bc: shrink internal library
function old new delta
bc_lib 1674 1618 -56
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 23:12:13 +0000 (00:12 +0100)]
bc: group ENABLE_BC code a bit better, no logic changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 21:49:59 +0000 (22:49 +0100)]
bc: fix "dc only" bug
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 21:25:28 +0000 (22:25 +0100)]
bc: unbreak "only bc" and "only dc" configs
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 20:31:29 +0000 (21:31 +0100)]
bc: simplify bc_lex_whitespace()
function old new delta
bc_lex_whitespace 52 41 -11
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 20:17:43 +0000 (21:17 +0100)]
bc: G.sbgn and G.send are unused, remove them
function old new delta
bc_program_index 66 64 -2
bc_parse_expr_empty_ok 1840 1838 -2
dc_main 176 168 -8
bc_main 73 65 -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-20) Total: -20 bytes
text data bss dec hex filename
980327 485 7296 988108 f13cc busybox_old
980307 485 7296 988088 f13b8 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 18:58:58 +0000 (19:58 +0100)]
bc: simplify filename saving in zbc_vm_file()
function old new delta
bc_vm_run 433 423 -10
zbc_vm_file 187 174 -13
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-23) Total: -23 bytes
text data bss dec hex filename
980350 485 7296 988131 f13e3 busybox_old
980327 485 7296 988108 f13cc busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 18:28:41 +0000 (19:28 +0100)]
bc: do not append duplicate NUL, reduce indentation in bc_read_line()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 18:23:45 +0000 (19:23 +0100)]
bc: change bc_read_line() and zbc_vm_stdin() to avoid double buffers
function old new delta
bc_read_line 129 124 -5
bc_vm_run 523 433 -90
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-95) Total: -95 bytes
text data bss dec hex filename
980445 485 7296 988226 f1442 busybox_old
980350 485 7296 988131 f13e3 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 17:16:39 +0000 (18:16 +0100)]
bc: further simplification in zbc_vm_stdin()
function old new delta
bc_vm_run 500 523 +23
bc_vec_concat 66 - -66
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/0 up/down: 23/-66) Total: -43 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 16:56:35 +0000 (17:56 +0100)]
bc: fix another thinko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 16:46:26 +0000 (17:46 +0100)]
bc: fix a thinko: dc uses [] string delimiters, bot bc!
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 16:23:24 +0000 (17:23 +0100)]
bc: fix comment handling
function old new delta
bc_vm_run 514 513 -1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 16:36:41 +0000 (17:36 +0100)]
bc: further zbc_vm_stdin() optimizations
function old new delta
bc_vm_run 534 514 -20
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 15:59:24 +0000 (16:59 +0100)]
bc: shrink zbc_vm_stdin()
function old new delta
bc_vm_run 592 534 -58
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 13 Dec 2018 15:35:52 +0000 (16:35 +0100)]
bc: trim config help text, add a few comments, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 22:25:13 +0000 (23:25 +0100)]
bc: unbreak CONFIG_FEATURE_BC_SIGNALS=y config
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 22:10:08 +0000 (23:10 +0100)]
bc: remove lexer function pointer
function old new delta
zbc_lex_next 81 1930 +1849
bc_parse_create 131 124 -7
common_parse_init 31 - -31
zdc_lex_token 672 - -672
zbc_lex_token 1193 - -1193
------------------------------------------------------------------------------
(add/remove: 0/3 grow/shrink: 1/1 up/down: 1849/-1903) Total: -54 bytes
text data bss dec hex filename
980634 485 7296 988415 f14ff busybox_old
980580 485 7296 988361 f14c9 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 22:03:10 +0000 (23:03 +0100)]
bc: remove parse function pointer
function old new delta
zbc_program_asciify - 372 +372
zcommon_parse - 341 +341
zbc_program_printStream - 141 +141
zbc_program_pushArray - 111 +111
zbc_program_nquit - 92 +92
zbc_vm_process 61 63 +2
zbc_parse_text 122 123 +1
bc_vm_run 591 592 +1
zdc_parse_mem 108 107 -1
zbc_parse_operator 175 174 -1
zbc_parse_else 133 132 -1
zbc_parse_body 104 103 -1
zbc_program_read 261 259 -2
zdc_parse_register 40 37 -3
zbc_parse_string 100 97 -3
zbc_parse_endBody 343 339 -4
zdc_parse_expr 688 680 -8
zbc_parse_auto 198 188 -10
zbc_parse_name 414 401 -13
common_parse_init 45 31 -14
zdc_parse_parse 23 - -23
bc_parse_create 158 131 -27
zbc_parse_stmt 1540 1502 -38
bc_parse_expr_empty_ok 1882 1840 -42
zbc_program_exec 3963 3837 -126
zbc_parse_parse 311 - -311
zbc_program_modexp 556 - -556
------------------------------------------------------------------------------
(add/remove: 5/3 grow/shrink: 3/16 up/down: 1061/-1184) Total: -123 bytes
text data bss dec hex filename
980757 485 7296 988538 f157a busybox_old
980634 485 7296 988415 f14ff busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 21:48:19 +0000 (22:48 +0100)]
bc: convert two more functions to "z" logic
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 21:43:58 +0000 (22:43 +0100)]
bc: remove BC_STATUS_EOF (again), the condition is detectable as len==0
function old new delta
bc_read_line 147 129 -18
bc_vm_run 618 591 -27
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-45) Total: -45 bytes
text data bss dec hex filename
980802 485 7296 988583 f15a7 busybox_old
980757 485 7296 988538 f157a busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 20:56:06 +0000 (21:56 +0100)]
dc: fix EOF handling in case of last line being incomplete
This wasn't working correctly:
$ echo -ne '10 20+p' | dc
30
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 20:41:40 +0000 (21:41 +0100)]
testsuite: add bc and dc tests
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 20:39:10 +0000 (21:39 +0100)]
bc: further conversions to "z" logic
function old new delta
bc_program_exec 3876 - -3876
zbc_program_exec - 3963 +3963
bc_program_execStr 429 - -429
zbc_program_execStr - 427 +427
bc_vm_file 197 - -197
zbc_vm_file - 187 +187
bc_vm_process 74 - -74
zbc_vm_process - 61 +61
bc_parse_pushIndex 66 68 +2
bc_vm_run 624 618 -6
dc_main 187 176 -11
bc_program_reset 64 - -64
zbc_program_pushArray 111 - -111
------------------------------------------------------------------------------
(add/remove: 4/6 grow/shrink: 1/2 up/down: 4640/-4768) Total: -128 bytes
text data bss dec hex filename
980922 485 7296 988703 f161f busybox_old
980794 485 7296 988575 f159f busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 15:44:34 +0000 (16:44 +0100)]
bc: optimize bc_parse_pushIndex()
function old new delta
bc_parse_pushIndex 80 68 -12
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 15:08:46 +0000 (16:08 +0100)]
bc: convert even more of lexer functions to "z" convention
function old new delta
bc_parse_name 416 - -416
zbc_parse_name - 414 +414
bc_parse_parse 305 - -305
zbc_parse_parse - 311 +311
bc_program_read 271 - -271
zbc_program_read - 261 +261
bc_parse_text 129 - -129
zbc_parse_text - 122 +122
dc_parse_parse 26 - -26
zdc_parse_parse - 23 +23
bc_program_index 66 64 -2
bc_vm_process 92 74 -18
bc_program_execStr 460 429 -31
bc_parse_expr_empty_ok 1939 1882 -57
------------------------------------------------------------------------------
(add/remove: 5/5 grow/shrink: 0/4 up/down: 1131/-1255) Total: -124 bytes
text data bss dec hex filename
981058 485 7296 988839 f16a7 busybox_old
980934 485 7296 988715 f162b busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 14:19:54 +0000 (15:19 +0100)]
bc: convert even more of lexer functions to "z" convention
function old new delta
bc_parse_stmt 1594 - -1594
zbc_parse_stmt - 1540 +1540
common_parse_expr 43 - -43
zcommon_parse_expr - 40 +40
bc_parse_expr 24 - -24
zbc_parse_expr - 24 +24
zbc_parse_body 108 104 -4
bc_program_read 277 271 -6
bc_program_execStr 468 460 -8
bc_parse_expr_empty_ok 1955 1939 -16
bc_parse_name 451 416 -35
bc_parse_parse 476 305 -171
------------------------------------------------------------------------------
(add/remove: 3/3 grow/shrink: 0/6 up/down: 1604/-1901) Total: -297 bytes
text data bss dec hex filename
981355 485 7296 989136 f17d0 busybox_old
981058 485 7296 988839 f16a7 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 13:54:38 +0000 (14:54 +0100)]
bc: convert more of lexer functions to "z" convention
function old new delta
dc_parse_expr 748 - -748
zdc_parse_expr - 688 +688
bc_parse_endBody 338 - -338
zbc_parse_endBody - 343 +343
bc_parse_auto 201 - -201
zbc_parse_auto - 198 +198
dc_parse_mem 115 - -115
zdc_parse_mem - 108 +108
bc_parse_body 116 - -116
zbc_parse_body - 108 +108
bc_parse_string 102 - -102
zbc_parse_string - 100 +100
dc_parse_register 43 - -43
zdc_parse_register - 40 +40
common_parse_expr 40 43 +3
bc_parse_parse 321 476 +155
bc_parse_stmt 1598 1594 -4
dc_parse_parse 44 26 -18
bc_parse_reset 153 - -153
------------------------------------------------------------------------------
(add/remove: 7/8 grow/shrink: 2/2 up/down: 1743/-1838) Total: -95 bytes
text data bss dec hex filename
981450 485 7296 989231 f182f busybox_old
981355 485 7296 989136 f17d0 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 12:58:55 +0000 (13:58 +0100)]
bc: partially convert lexer functions to "z" convention
function old new delta
bc_lex_token 1228 - -1228
zbc_lex_token - 1193 +1193
dc_lex_token 674 - -674
zdc_lex_token - 672 +672
bc_parse_operator 177 - -177
zbc_parse_operator - 175 +175
bc_parse_else 133 - -133
zbc_parse_else - 133 +133
bc_lex_next 91 - -91
zbc_lex_next - 81 +81
dc_parse_expr 744 748 +4
bc_parse_string 100 102 +2
bc_parse_body 114 116 +2
dc_parse_mem 116 115 -1
bc_parse_text 130 129 -1
dc_parse_register 51 43 -8
bc_parse_endBody 358 338 -20
bc_parse_name 513 451 -62
bc_parse_auto 265 201 -64
bc_parse_expr_empty_ok 2032 1955 -77
bc_parse_parse 417 321 -96
bc_parse_stmt 1753 1598 -155
------------------------------------------------------------------------------
(add/remove: 5/5 grow/shrink: 3/9 up/down: 2262/-2787) Total: -525 bytes
text data bss dec hex filename
981975 485 7296 989756 f1a3c busybox_old
981450 485 7296 989231 f182f busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 12 Dec 2018 10:51:32 +0000 (11:51 +0100)]
bc: code shrink in bc_num_cmp()
function old new delta
bc_num_cmp 275 231 -44
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 23:50:23 +0000 (00:50 +0100)]
bc: simplify zbc_program_logical()
function old new delta
bc_program_exec 3918 3876 -42
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-42) Total: -42 bytes
text data bss dec hex filename
982061 485 7296 989842 f1a92 busybox_old
982019 485 7296 989800 f1a68 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 23:29:24 +0000 (00:29 +0100)]
bc: simplify nested read() check
function old new delta
bc_vm_run 622 624 +2
dc_main 186 187 +1
bc_main 72 73 +1
bc_program_read 312 277 -35
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/1 up/down: 4/-35) Total: -31 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 22:50:14 +0000 (23:50 +0100)]
bc: in non-interactive config, POSIX error functions never return nonzero
function old new delta
bc_parse_expr_empty_ok 2036 2032 -4
bc_parse_stmt 1767 1753 -14
bc_lex_token 1259 1228 -31
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-49) Total: -49 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 22:22:52 +0000 (23:22 +0100)]
bc: use common_parse_init() in bc_vm_init()
function old new delta
common_parse_init 26 45 +19
dc_parse_init 17 - -17
bc_parse_init 17 - -17
bc_vm_init 744 725 -19
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 1/1 up/down: 19/-53) Total: -34 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 21:26:38 +0000 (22:26 +0100)]
bc: fix EOF handling in bc_program_read()
$ bc -q
read()
2^D^D2
^ prints the result of read()'ed expression
function old new delta
zbc_program_print 629 642 +13
bc_program_read 322 312 -10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 13/-10) Total: 3 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 20:21:14 +0000 (21:21 +0100)]
bc: tweak comment
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 19:57:53 +0000 (20:57 +0100)]
bc: convert bc_program_asciify to "z" function
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 18:52:25 +0000 (19:52 +0100)]
bc: shrink bc_program_printString
function old new delta
zbc_program_print 665 642 -23
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 18:42:05 +0000 (19:42 +0100)]
bc: convert zbc_program_op to "z" function, fix a thinko in prev commits
function old new delta
zbc_program_assign 448 447 -1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 18:37:00 +0000 (19:37 +0100)]
bc: convert bc_program_logical to "z" function
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 18:29:35 +0000 (19:29 +0100)]
bc: do not use "(cond ? f1 : f2)(params)" idiom, it messes up static function optimizations
With direct calls, GCC no longer thinks that we take addresses of the functions,
and can use "more optimal" internal ABI for _all_ calls to these functions,
not only at this callsite. On i486, regparm is used, and:
function old new delta
zbc_num_inv 56 57 +1
zbc_num_k 852 851 -1
zbc_program_modexp 558 556 -2
zbc_num_d 541 539 -2
bc_num_ulong2num 59 57 -2
zbc_program_num 840 836 -4
bc_num_zero 11 7 -4
bc_num_one 28 24 -4
bc_program_exec 3928 3918 -10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/8 up/down: 1/-29) Total: -28 bytes
text data bss dec hex filename
982237 485 7296 990018 f1b42 busybox_old
982209 485 7296 989990 f1b26 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 18:04:44 +0000 (19:04 +0100)]
bc: convert arithmetic calc functions to "z" logic
In order for magic macros to work, a bit of reordering was necessary.
function old new delta
zbc_program_modexp - 558 +558
zbc_program_assign - 448 +448
zbc_program_pushArray - 111 +111
zbc_num_s 239 237 -2
zbc_num_d 543 541 -2
zbc_num_binary 145 143 -2
zbc_num_a 443 441 -2
zbc_num_rem 95 91 -4
zbc_num_divmod 150 146 -4
zbc_num_m 269 257 -12
zbc_num_r 230 208 -22
zbc_num_printNum 447 417 -30
bc_program_exec 3960 3928 -32
zbc_num_p 434 399 -35
zbc_program_num 880 840 -40
zbc_num_k 913 852 -61
zbc_program_printStream 141 - -141
bc_program_assign 455 - -455
bc_program_modexp 668 - -668
------------------------------------------------------------------------------
(add/remove: 3/3 grow/shrink: 0/13 up/down: 1117/-1512) Total: -395 bytes
text data bss dec hex filename
982632 485 7296 990413 f1ccd busybox_old
982237 485 7296 990018 f1b42 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 18:12:13 +0000 (19:12 +0100)]
bc: rename arithmetic calc functions to "z" functions, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 16:56:09 +0000 (17:56 +0100)]
bc: move declarations around, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 16:36:21 +0000 (17:36 +0100)]
bc: code shrink in zbc_lex_number()
function old new delta
zbc_lex_number 279 190 -89
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 14:45:15 +0000 (15:45 +0100)]
bc: make bc_program_pushVar "z-function"
function old new delta
bc_program_pushVar 200 198 -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 11 Dec 2018 14:29:32 +0000 (15:29 +0100)]
bc: improve "noninteractive" macro machinery so that even "return zero" code is not generated
Most affected functions shrink by 2 bytes on x86.
function old new delta
zbc_program_num - 880 +880
zbc_program_print - 665 +665
zbc_num_printNum - 447 +447
zbc_program_call - 323 +323
zbc_program_copyToVar - 287 +287
zbc_lex_number - 279 +279
zbc_program_binOpPrep - 269 +269
zbc_program_assignStr - 142 +142
zbc_program_printStream - 141 +141
zbc_func_insert - 93 +93
zbc_num_ulong - 88 +88
zbc_program_prep - 79 +79
zbc_num_shift - 53 +53
bc_num_shift 54 - -54
bc_program_prep 81 - -81
bc_num_ulong 90 - -90
bc_func_insert 95 - -95
bc_program_printStream 143 - -143
bc_program_assignStr 144 - -144
bc_program_binOpPrep 271 - -271
bc_lex_number 281 - -281
bc_program_copyToVar 289 - -289
bc_program_call 325 - -325
bc_num_printNum 471 - -471
bc_program_print 667 - -667
bc_program_num 880 - -880
------------------------------------------------------------------------------
(add/remove: 13/13 grow/shrink: 0/0 up/down: 3746/-3791) Total: -45 bytes
text data bss dec hex filename
982779 485 7296 990560 f1d60 busybox_old
982734 485 7296 990515 f1d33 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 19:56:08 +0000 (20:56 +0100)]
bc: it's not clear bc_vm_file() always exits on errors, remove ERRORS_ARE_FATAL
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 19:41:05 +0000 (20:41 +0100)]
bc: more ERRORS_ARE_FATAL annotations
function old new delta
bc_program_exec 3920 3969 +49
bc_program_call 329 325 -4
bc_vm_run 622 616 -6
bc_program_modexp 677 668 -9
bc_program_assign 471 455 -16
bc_program_pushArray 113 - -113
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/4 up/down: 49/-148) Total: -99 bytes
text data bss dec hex filename
982872 485 7296 990653 f1dbd busybox_old
982773 485 7296 990554 f1d5a busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 19:26:04 +0000 (20:26 +0100)]
bc: stop checking for name length in bc_lex_name()
Gigabyte-long names are not a practical concern.
function old new delta
bc_lex_name 73 69 -4
bc_lex_token 1266 1259 -7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-11) Total: -11 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 19:17:24 +0000 (20:17 +0100)]
bc: optimize non-interactive config: we know that many functions always succeed
function old new delta
bc_program_assign 475 471 -4
bc_program_prep 87 81 -6
bc_parse_parse 423 417 -6
bc_num_p 440 434 -6
bc_program_printStream 153 143 -10
bc_program_execStr 478 468 -10
bc_parse_auto 275 265 -10
bc_num_k 925 913 -12
bc_program_copyToVar 307 289 -18
bc_program_binOpPrep 289 271 -18
bc_num_printNum 489 471 -18
bc_num_m 287 269 -18
bc_program_pushArray 139 113 -26
bc_program_modexp 707 677 -30
bc_program_print 704 667 -37
bc_program_exec 4010 3920 -90
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/16 up/down: 0/-319) Total: -319 bytes
text data bss dec hex filename
983202 485 7296 990983 f1f07 busybox_old
982883 485 7296 990664 f1dc8 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 18:46:53 +0000 (19:46 +0100)]
bc: in non-interactive config, let compiler know that error funcs do not return
function old new delta
bc_num_s 235 239 +4
bc_lex_next 92 91 -1
dc_parse_register 53 51 -2
dc_parse_parse 46 44 -2
bc_vm_run 624 622 -2
bc_program_assignStr 146 144 -2
bc_parse_else 135 133 -2
bc_parse_body 116 114 -2
bc_num_a 445 443 -2
bc_func_insert 97 95 -2
bc_program_pushVar 203 200 -3
bc_parse_text 133 130 -3
bc_error_bad_character 17 14 -3
bc_error 14 11 -3
bc_program_printStream 157 153 -4
bc_program_prep 91 87 -4
bc_program_copyToVar 311 307 -4
bc_num_ulong 95 90 -5
bc_num_p 445 440 -5
bc_program_print 711 704 -7
bc_parse_endBody 365 358 -7
bc_num_r 237 230 -7
bc_num_d 550 543 -7
dc_lex_token 682 674 -8
bc_program_pushArray 147 139 -8
bc_program_assign 485 475 -10
bc_program_read 333 322 -11
bc_lex_token 1278 1266 -12
bc_parse_stmt 1780 1767 -13
bc_program_modexp 723 707 -16
dc_parse_expr 762 744 -18
bc_program_execStr 496 478 -18
bc_program_call 347 329 -18
bc_vm_file 219 197 -22
bc_program_binOpPrep 311 289 -22
bc_parse_name 539 513 -26
bc_parse_parse 451 423 -28
bc_program_num 912 880 -32
bc_read_line 172 139 -33
bc_program_exec 4048 4010 -38
bc_parse_auto 313 275 -38
bc_parse_expr_empty_ok 2095 2036 -59
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/41 up/down: 4/-509) Total: -505 bytes
text data bss dec hex filename
983707 485 7296 991488 f2100 busybox_old
983202 485 7296 990983 f1f07 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 18:19:38 +0000 (19:19 +0100)]
tls: prepare for ECDH_anon ciphers
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 17:49:29 +0000 (18:49 +0100)]
tls: fix a potential (currently "disabled" by a macro) SHA1-related bug
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 15:43:53 +0000 (16:43 +0100)]
tls: if !ENABLE_FEATURE_TLS_SHA1, tls->MAC_size is always SHA256_OUTSIZE for AES-CBC
function old new delta
tls_xread_record 634 636 +2
xwrite_encrypted 579 580 +1
tls_handshake 2095 2085 -10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 3/-10) Total: -7 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 15:14:58 +0000 (16:14 +0100)]
tls: introduce FEATURE_TLS_SHA1 to make SHA1 code optional
When disabled:
function old new delta
xwrite_encrypted 580 579 -1
prf_hmac_sha256 222 217 -5
hmac_begin 158 149 -9
static.ciphers 32 20 -12
tls_handshake 2115 2095 -20
hmac 87 61 -26
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/6 up/down: 0/-73) Total: -73 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 14:38:52 +0000 (15:38 +0100)]
bc: simplify bc_num_parseDecimal() further
function old new delta
bc_program_num 925 912 -13
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 14:37:14 +0000 (15:37 +0100)]
bc: make all function pointers FAST_FUNC, on i486 this saves ~400 bytes
function old new delta
bc_num_rem 91 95 +4
bc_num_inv 53 56 +3
bc_num_d 569 572 +3
bc_num_printDigits 136 137 +1
bc_program_assign 486 485 -1
dc_lex_token 684 682 -2
bc_vec_pop 27 25 -2
bc_vec_npop 55 53 -2
bc_program_read 335 333 -2
bc_program_print 713 711 -2
bc_parse_parse 462 460 -2
bc_lex_token 1280 1278 -2
bc_num_printChar 27 24 -3
bc_num_binary 150 147 -3
dc_parse_parse 59 55 -4
bc_vm_run 630 626 -4
bc_num_printHex 71 67 -4
bc_num_divmod 155 150 -5
bc_vec_free 24 18 -6
bc_string_free 15 9 -6
bc_num_free 15 9 -6
bc_id_free 15 9 -6
bc_parse_free 53 46 -7
bc_program_scale 8 - -8
bc_num_r 245 237 -8
bc_func_free 35 27 -8
bc_result_free 57 46 -11
bc_num_a 454 443 -11
bc_num_sub 77 65 -12
bc_num_add 77 65 -12
bc_program_modexp 736 723 -13
bc_num_s 252 239 -13
bc_num_mul 62 49 -13
bc_num_mod 62 49 -13
bc_num_div 62 49 -13
bc_num_pow 47 31 -16
bc_program_exec 4081 4059 -22
bc_num_printNum 514 489 -25
bc_num_p 478 445 -33
bc_program_len 34 - -34
bc_program_num 963 925 -38
bc_num_k 988 944 -44
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 4/36 up/down: 11/-416) Total: -405 bytes
text data bss dec hex filename
984536 485 7296 992317 f243d busybox_old
984131 485 7296 991912 f22a8 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 14:15:42 +0000 (15:15 +0100)]
bc: 0xffffffffffffffff may be larger than unsigned long
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 14:12:58 +0000 (15:12 +0100)]
bc: optimize bc_vec_concat()
function old new delta
bc_vec_concat 71 66 -5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 11:57:01 +0000 (12:57 +0100)]
bc: simplify bc_program_len()
function old new delta
bc_program_len 42 34 -8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 11:33:40 +0000 (12:33 +0100)]
bc: simplify bc_program_print()
function old new delta
bc_program_print 730 713 -17
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 11:22:15 +0000 (12:22 +0100)]
bc: simplify bc_num_ulong2num()
function old new delta
bc_num_ulong2num 64 59 -5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 10 Dec 2018 10:54:18 +0000 (11:54 +0100)]
bc: move str-to-num conversion functions to their only caller, bc_num_parse()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 9 Dec 2018 12:33:52 +0000 (13:33 +0100)]
bc: further simplify string-to-number conversion code
function old new delta
bc_program_index 66 64 -2
bc_program_num 983 963 -20
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-22) Total: -22 bytes
text data bss dec hex filename
985706 477 7296 993479 f28c7 busybox_old
985684 477 7296 993457 f28b1 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 9 Dec 2018 12:21:54 +0000 (13:21 +0100)]
bc: simplify string-tonumber conversion code
function old new delta
bc_program_num 1108 983 -125
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-125) Total: -125 bytes
text data bss dec hex filename
985831 477 7296 993604 f2944 busybox_old
985706 477 7296 993479 f28c7 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 9 Dec 2018 11:04:44 +0000 (12:04 +0100)]
bc: no need to "set to zero" BcNum after bc_num_init(), it already is
function old new delta
bc_num_init 48 49 +1
bc_program_num 1115 1108 -7
bc_program_exec 4098 4081 -17
bc_vm_init 786 768 -18
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: 1/-42) Total: -41 bytes
text data bss dec hex filename
985872 477 7296 993645 f296d busybox_old
985831 477 7296 993604 f2944 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 9 Dec 2018 10:44:20 +0000 (11:44 +0100)]
bc: add and use bc_num_init_DEF_SIZE()
function old new delta
bc_num_init_DEF_SIZE - 10 +10
bc_num_binary 150 148 -2
bc_program_pushVar 208 203 -5
bc_program_modexp 741 736 -5
bc_program_copyToVar 316 311 -5
bc_program_call 352 347 -5
bc_array_expand 88 83 -5
bc_program_num 1125 1115 -10
bc_vm_init 821 786 -35
bc_program_exec 4152 4098 -54
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/9 up/down: 10/-126) Total: -116 bytes
text data bss dec hex filename
985988 477 7296 993761 f29e1 busybox_old
985872 477 7296 993645 f296d busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 9 Dec 2018 01:54:06 +0000 (02:54 +0100)]
bc: in bc_program_execStr(), push two variables into inner scope
function old new delta
bc_program_execStr 502 496 -6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 9 Dec 2018 01:24:14 +0000 (02:24 +0100)]
bc: in bc_program_exec(), push two variables into inner scope
While at it, delete empty lines.
function old new delta
bc_program_exec 4179 4152 -27
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 23:03:57 +0000 (00:03 +0100)]
bc: add accessors for G.prog.strs[idx], G.prog.fns[idx]
function old new delta
bc_program_str - 17 +17
bc_program_func - 17 +17
bc_program_addFunc 209 204 -5
bc_program_reset 70 64 -6
bc_program_printStream 163 157 -6
bc_program_print 736 730 -6
bc_vm_file 226 219 -7
bc_parse_text 143 133 -10
bc_parse_reset 163 153 -10
bc_parse_endBody 375 365 -10
bc_parse_create 168 158 -10
bc_parse_addFunc 41 31 -10
bc_program_call 364 352 -12
bc_program_read 350 335 -15
bc_program_execStr 528 502 -26
bc_program_exec 4219 4179 -40
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 0/14 up/down: 34/-173) Total: -139 bytes
text data bss dec hex filename
985043 485 7296 992824 f2638 busybox_old
984904 485 7296 992685 f25ad busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 22:48:53 +0000 (23:48 +0100)]
bc: eliminate always the same params to bc_num_printBase()
function old new delta
bc_program_print 739 736 -3
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 22:36:28 +0000 (23:36 +0100)]
bc: remove redundant error checks in bc_parse_print()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 22:18:06 +0000 (23:18 +0100)]
bc: stop propagating pointer to G.prog.nchars deep into printing functions
function old new delta
bc_num_printHex 62 71 +9
bc_num_printNewline 47 54 +7
bc_num_printDigits 132 136 +4
bc_num_printChar 23 27 +4
bc_program_printStream 173 163 -10
bc_program_print 754 739 -15
bc_num_printNum 538 514 -24
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/3 up/down: 24/-49) Total: -25 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 20:56:37 +0000 (21:56 +0100)]
bc: do not pass line width in parameters, it's in globals
function old new delta
bc_num_printNewline 36 47 +11
bc_num_printHex 70 62 -8
bc_num_printDigits 142 132 -10
bc_program_printStream 185 173 -12
bc_program_print 773 754 -19
bc_num_printNum 563 538 -25
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/5 up/down: 11/-74) Total: -63 bytes
text data bss dec hex filename
985122 485 7296 992903 f2687 busybox_old
985059 485 7296 992840 f2648 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 20:39:10 +0000 (21:39 +0100)]
bc: remove "ready for more input" message, GNU bc does not print that
function old new delta
bc_read_line 285 268 -17
bc_vm_run 684 630 -54
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-71) Total: -71 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 20:24:38 +0000 (21:24 +0100)]
tls: AES-GCM: in GMULT, avoid memcpy, use one less variable in bit loop
function old new delta
GMULT 168 159 -9
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 18:34:35 +0000 (19:34 +0100)]
bc: trim banner, use empty interactive prompts (GNU bc compat)
function old new delta
bc_vm_run 689 684 -5
bc_program_read 355 350 -5
bc_read_line 307 285 -22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-32) Total: -32 bytes
text data bss dec hex filename
985409 485 7296 993190 f27a6 busybox_old
985265 485 7296 993046 f2716 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 17:59:07 +0000 (18:59 +0100)]
dc: fix "small dc" to have standard command line API
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 14:45:46 +0000 (15:45 +0100)]
lineedit: fix "defined but not used" sigaction2 warning
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 14:41:17 +0000 (15:41 +0100)]
mdev: suppress aliasing warning
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 14:35:24 +0000 (15:35 +0100)]
inetd: suppress aliasing warning
function old new delta
sigprocmask2 - 8 +8
wait_for_child_or_signal 213 218 +5
dowait 424 429 +5
block_CHLD_HUP_ALRM 62 59 -3
sigprocmask_SIG_SETMASK 16 - -16
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 2/1 up/down: 18/-19) Total: -1 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 12:49:15 +0000 (13:49 +0100)]
suppress gcc 8 aliasing warnings
function old new delta
sigprocmask_SIG_SETMASK - 16 +16
wait_for_child_or_signal 221 213 -8
dowait 432 424 -8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 8 Dec 2018 12:34:43 +0000 (13:34 +0100)]
tls: make RIGHTSHIFTX() in AES-GCM faster
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 7 Dec 2018 15:35:43 +0000 (16:35 +0100)]
bc: replace G.eof with a special exit code of bc_vm_stdin()
function old new delta
bc_read_line 305 307 +2
bc_vm_run 701 689 -12
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 2/-12) Total: -10 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 7 Dec 2018 15:22:45 +0000 (16:22 +0100)]
bc: convert two macros to functions, unwing one complex max(a,min(b,c))
function old new delta
BC_NUM_AREQ - 45 +45
BC_NUM_MREQ - 33 +33
bc_num_rem 104 91 -13
bc_num_divmod 168 155 -13
bc_num_d 584 569 -15
bc_num_mul 80 62 -18
bc_num_mod 80 62 -18
bc_num_div 80 62 -18
bc_num_sub 112 77 -35
bc_num_add 112 77 -35
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 0/8 up/down: 78/-165) Total: -87 bytes
text data bss dec hex filename
985526 485 7296 993307 f281b busybox_old
985439 485 7296 993220 f27c4 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 7 Dec 2018 14:50:14 +0000 (15:50 +0100)]
bc: do not perform domr limit checks when they can't work (e.g. on 32-bit arches)
Also, optimize printing of messages with fixed limit strings
by including limits as strings.
function old new delta
bc_num_ulong 103 95 -8
bc_lex_number 296 281 -15
dc_lex_token 701 684 -17
bc_lex_name 90 73 -17
bc_num_shift 72 54 -18
bc_lex_token 1299 1280 -19
bc_parse_stmt 1868 1768 -100
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/7 up/down: 0/-194) Total: -194 bytes
text data bss dec hex filename
985814 485 7296 993595 f293b busybox_old
985526 485 7296 993307 f281b busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 7 Dec 2018 14:10:05 +0000 (15:10 +0100)]
bc: pull temporary into a register
function old new delta
bc_num_ulong 103 95 -8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 7 Dec 2018 11:57:32 +0000 (12:57 +0100)]
bc: use more compact parsing data structures
function old new delta
dc_lex_token 697 701 +4
bc_parse_next_rel 20 - -20
bc_parse_next_read 20 - -20
bc_parse_next_print 20 - -20
bc_parse_next_param 20 - -20
bc_parse_next_for 20 - -20
bc_parse_next_expr 20 - -20
bc_parse_next_elem 20 - -20
common_parse_expr 62 40 -22
bc_parse_expr 49 24 -25
dc_lex_regs 52 13 -39
bc_parse_name 581 539 -42
bc_parse_expr_empty_ok 2157 2108 -49
dc_parse_insts 332 83 -249
dc_lex_tokens 364 91 -273
bc_parse_stmt 2261 1868 -393
------------------------------------------------------------------------------
(add/remove: 0/7 grow/shrink: 1/8 up/down: 4/-1232) Total: -1228 bytes
text data bss dec hex filename
987037 485 7296 994818 f2e02 busybox_old
985814 485 7296 993595 f293b busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 7 Dec 2018 11:41:42 +0000 (12:41 +0100)]
bc: use only G_interrupt as interrupt flag
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 22:06:57 +0000 (23:06 +0100)]
bc: fix exit codes for FEATURE_CLEAN_UP=y
$ echo 0/0 | ./busybox bc; echo $?
bc: divide by zero
1
$ echo halt | ./busybox bc; echo $?
0 <------- was 1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>