Denys Vlasenko [Sun, 16 Dec 2018 20:29:08 +0000 (21:29 +0100)]
bc: stop using p->exits when parsing if()
function old new delta
zbc_parse_stmt_possibly_auto 2180 2138 -42
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 16 Dec 2018 20:21:27 +0000 (21:21 +0100)]
bc: preparation to stop using p->exits when parsing if()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 16 Dec 2018 20:08:30 +0000 (21:08 +0100)]
bc: fix "print 1,2,3" parsing
function old new delta
zbc_parse_stmt_possibly_auto 2245 2180 -65
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-65) Total: -65 bytes
text data bss dec hex filename
982237 485 7296 990018 f1b42 busybox_old
982152 485 7296 989933 f1aed busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 16 Dec 2018 19:46:15 +0000 (20:46 +0100)]
bc: disallow empty statement as function body
$ bc
define z() <cr>
<cr>
bc: no statement after 'define'
function old new delta
zbc_parse_stmt_possibly_auto 2239 2245 +6
zbc_vm_process 589 594 +5
zbc_parse_stmt_fail_if_bare_NLINE 25 28 +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 14/0) Total: 14 bytes
text data bss dec hex filename
982216 485 7296 989997 f1b2d busybox_old
982237 485 7296 990018 f1b42 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 16 Dec 2018 19:41:32 +0000 (20:41 +0100)]
bc: allow only one <newline> between if() and stmt
Attempt to have more than one causes this error message:
$ bc -q
if (1)<cr>
<cr>
bc: no statement after 'if'
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 16 Dec 2018 19:32:58 +0000 (20:32 +0100)]
bc: simplify bc_parse_pushName(), do not free name in it - avoids one strdup
function old new delta
zbc_parse_name 511 509 -2
zdc_parse_register 50 43 -7
bc_parse_pushName 61 39 -22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-31) Total: -31 bytes
text data bss dec hex filename
982183 485 7296 989964 f1b0c busybox_old
982152 485 7296 989933 f1aed busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 16 Dec 2018 18:47:40 +0000 (19:47 +0100)]
bc: simplify zbc_parse_break_or_continue(), logic is the same
function old new delta
zbc_parse_stmt_possibly_auto 2259 2224 -35
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-35) Total: -35 bytes
text data bss dec hex filename
982218 485 7296 989999 f1b2f busybox_old
982183 485 7296 989964 f1b0c busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 16 Dec 2018 18:21:57 +0000 (19:21 +0100)]
bc: fold zbc_parse_else() into its only caller
While at it, allow newline between "else" and its body
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 16 Dec 2018 18:10:38 +0000 (19:10 +0100)]
bc: fold bc_parse_noElse() into its only caller
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 16 Dec 2018 17:43:51 +0000 (18:43 +0100)]
bc: delete unused (write-only) BcParse::nbraces member
function old new delta
zbc_lex_next 2296 2309 +13
bc_parse_expr_empty_ok 2021 2025 +4
bc_vm_init 760 757 -3
bc_num_printNewline 54 51 -3
zbc_num_divmod 156 150 -6
bc_parse_reset 113 106 -7
zbc_lex_number 200 192 -8
bc_parse_number 83 66 -17
zdc_parse_expr 707 671 -36
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/7 up/down: 17/-80) Total: -63 bytes
text data bss dec hex filename
982275 485 7296 990056 f1b68 busybox_old
982212 485 7296 989993 f1b29 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 16 Dec 2018 16:30:35 +0000 (17:30 +0100)]
bc: fixes for multi-line if/while/for
function old new delta
zbc_vm_process 561 589 +28
zbc_lex_next_and_skip_NLINE - 22 +22
zbc_parse_stmt_possibly_auto 2232 2253 +21
zbc_lex_skip_if_at_NLINE - 14 +14
zbc_lex_number 192 200 +8
zbc_num_divmod 150 156 +6
bc_vm_run 134 139 +5
bc_vm_init 757 760 +3
bc_num_printNewline 51 54 +3
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 7/0 up/down: 110/0) Total: 110 bytes
text data bss dec hex filename
982138 485 7296 989919 f1adf busybox_old
982275 485 7296 990056 f1b68 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 16 Dec 2018 16:06:07 +0000 (17:06 +0100)]
bc: fix handling of 'return' not in functions, and 'define f()<newline>{...}'
function old new delta
zbc_vm_process 561 597 +36
zbc_parse_stmt_possibly_auto 2232 2253 +21
zbc_lex_number 192 200 +8
zbc_num_divmod 150 156 +6
bc_vm_run 134 139 +5
bc_vm_init 757 760 +3
bc_num_printNewline 51 54 +3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 7/0 up/down: 82/0) Total: 82 bytes
text data bss dec hex filename
982138 485 7296 989919 f1adf busybox_old
982247 485 7296 990028 f1b4c busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 16 Dec 2018 15:03:03 +0000 (16:03 +0100)]
bc: partially rewrite parser, tests pass, ^C might be broken now
The entire control construct (if/while/for/funcdef) or {} block is
"eaten" by the corresponding parsing function, instead of maintaining
special "block flag stack" with magic bits in it, and returning to main
input loop after every inner statement (every input line, essentially).
This required moving line input deep into lexer - now zbc_lex_next()
triggers more reading when needed.
"block flag stack" is gone.
Correctness of ^C handling wasn't checked, might need fixing now.
if/else syntax is changed to match GNU bc: "else" can not be on
the next line (the rationale is that "if (1) 2" statement in interactive
mode should execute and print 2 instead of waiting for possible
"else ..." line).
This change fixes the following examples:
if (1) if (1) 1 else 2 else 3
if (0) 1 else if (1) 2
define w() { auto z; return 1; }
function old new delta
zbc_parse_stmt_possibly_auto - 2232 +2232
zbc_vm_process 89 561 +472
zbc_lex_next 1982 2296 +314
bc_vm_init 749 757 +8
bc_parse_expr_empty_ok 2016 2021 +5
bc_num_printNewline 54 51 -3
zbc_program_read 289 280 -9
bc_parse_free 47 38 -9
bc_parse_reset 126 113 -13
bc_parse_create 108 92 -16
bc_parse_push_block_flag 47 - -47
bc_parse_noElse 48 - -48
zbc_parse_text_init 113 59 -54
zbc_parse_body 121 - -121
zbc_parse_else 125 - -125
zbc_parse_endBody 254 - -254
bc_vm_run 421 134 -287
zbc_parse_auto 290 - -290
zcommon_parse 476 - -476
zbc_parse_stmt 1682 7 -1675
------------------------------------------------------------------------------
(add/remove: 1/7 grow/shrink: 4/8 up/down: 3031/-3427) Total: -396 bytes
text data bss dec hex filename
982586 485 7296 990367 f1c9f busybox_old
982138 485 7296 989919 f1adf busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 15 Dec 2018 19:06:59 +0000 (20:06 +0100)]
bc: lexer debugging, added some failing test cases
function old new delta
bc_parse_push_block_flag - 47 +47
zbc_parse_body 107 121 +14
zbc_num_divmod 156 150 -6
zbc_lex_number 200 192 -8
zbc_parse_endBody 264 254 -10
bc_parse_startBody 47 - -47
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 1/3 up/down: 61/-71) Total: -10 bytes
text data bss dec hex filename
982596 485 7296 990377 f1ca9 busybox_old
982586 485 7296 990367 f1c9f busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sat, 15 Dec 2018 14:07:14 +0000 (15:07 +0100)]
bc: simplify BC_INST_JUMP[_ZERO] handling
function old new delta
zbc_program_exec 4063 4050 -13
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 23:39:17 +0000 (00:39 +0100)]
bc: rewrite "block flag stack" using simple realloc'ed byte array
Each access to current top flag took a function call + fetch of three data items
+ multiplication and some additions + and then following the resulting pointer.
After the change, it is: fetch pointer value + one byte access via this pointer.
function old new delta
bc_parse_startBody 45 49 +4
bc_parse_free 46 47 +1
zbc_parse_auto 188 185 -3
bc_parse_push 14 11 -3
bc_vm_run 398 394 -4
zbc_vm_process 63 58 -5
zdc_parse_expr 638 632 -6
zbc_parse_body 101 95 -6
bc_parse_addFunc 31 25 -6
bc_parse_noElse 56 48 -8
zcommon_parse 341 331 -10
zbc_parse_else 134 123 -11
bc_parse_create 124 108 -16
zbc_parse_text_init 123 104 -19
zbc_parse_endBody 292 252 -40
zbc_parse_stmt 1479 1420 -59
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/14 up/down: 5/-196) Total: -191 bytes
text data bss dec hex filename
979880 485 7296 987661 f120d busybox_old
979689 485 7296 987470 f114e busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 22:41:33 +0000 (23:41 +0100)]
bc: drop zbc_parse_endBody() bool parameter, move its code to caller which uses it
function old new delta
zbc_parse_stmt 1456 1479 +23
zbc_parse_body 103 101 -2
zbc_parse_endBody 326 292 -34
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 23/-36) Total: -13 bytes
text data bss dec hex filename
979893 485 7296 987674 f121a busybox_old
979880 485 7296 987661 f120d busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 22:32:51 +0000 (23:32 +0100)]
bc: shorten one message, make defines more readable
text data bss dec hex filename
979916 485 7296 987697 f1231 busybox_old
979893 485 7296 987674 f121a busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 22:12:48 +0000 (23:12 +0100)]
bc: pull zbc_lex_next() call out of zbc_parse_operator() into one caller that uses it
function old new delta
bc_parse_operator - 144 +144
bc_parse_expr_empty_ok 1788 1792 +4
zbc_parse_operator 170 - -170
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 1/0 up/down: 148/-170) Total: -22 bytes
text data bss dec hex filename
979938 485 7296 987719 f1247 busybox_old
979916 485 7296 987697 f1231 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Fri, 14 Dec 2018 22:00:24 +0000 (23:00 +0100)]
bx: add more debug scaffolding
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
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>