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>
Denys Vlasenko [Thu, 6 Dec 2018 17:46:42 +0000 (18:46 +0100)]
dc: fix testsuite
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 17:41:59 +0000 (18:41 +0100)]
bc: correctly parse dc options
function old new delta
bc_vm_init - 821 +821
bc_vm_file - 226 +226
dc_main 41 187 +146
bc_main 41 73 +32
packed_usage 33076 33059 -17
bc_vm_run 1903 701 -1202
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 2/2 up/down: 1225/-1219) Total: 6 bytes
text data bss dec hex filename
987046 485 7296 994827 f2e0b busybox_old
987037 485 7296 994818 f2e02 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 14:21:39 +0000 (15:21 +0100)]
dc: fix "dc does_not_exist" SEGVing
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 13:10:10 +0000 (14:10 +0100)]
fix make_single_applets.sh
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 12:10:56 +0000 (13:10 +0100)]
bc: code shrink - convert two macros to functions
function old new delta
bc_program_printStream - 185 +185
bc_program_pushArray - 147 +147
bc_program_exec 4132 4219 +87
bc_vec_pop - 27 +27
bc_vec_top - 13 +13
bc_num_ulong 92 103 +11
bc_vm_run 1905 1903 -2
bc_vm_process 94 92 -2
bc_program_reset 72 70 -2
bc_program_prep 93 91 -2
bc_program_call 366 364 -2
bc_parse_startBody 47 45 -2
bc_parse_parse 464 462 -2
bc_parse_else 137 135 -2
bc_parse_body 118 116 -2
bc_program_num 1129 1125 -4
bc_parse_text 147 143 -4
bc_program_retire 40 35 -5
bc_program_print 778 773 -5
bc_program_modexp 746 741 -5
bc_program_pushVar 215 208 -7
bc_program_copyToVar 323 316 -7
bc_parse_operator 184 177 -7
bc_parse_noElse 65 56 -9
bc_program_binOpRetire 56 46 -10
bc_parse_stmt 2271 2261 -10
bc_program_execStr 543 528 -15
bc_program_assignStr 161 146 -15
bc_parse_expr_empty_ok 2178 2157 -21
bc_parse_endBody 420 375 -45
bc_program_asciify 464 - -464
------------------------------------------------------------------------------
(add/remove: 4/1 grow/shrink: 2/24 up/down: 470/-651) Total: -181 bytes
text data bss dec hex filename
987227 485 7296 995008 f2ec0 busybox_old
987046 485 7296 994827 f2e0b busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 11:59:40 +0000 (12:59 +0100)]
bc: make keyword POSIXness check more readable
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 11:54:26 +0000 (12:54 +0100)]
bc: move a function to reduce forward declarations
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 11:47:17 +0000 (12:47 +0100)]
bc: small simplification in dc_lex_token()
Pulling array element into a temporary, taking address of this temporary
and copying it? That's much unnecessary work.
function old new delta
dc_lex_token 701 697 -4
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 11:34:39 +0000 (12:34 +0100)]
bc: add comment about BC_NUM_DEF_SIZE
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 11:06:16 +0000 (12:06 +0100)]
bc: fix for prev commit
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 11:01:17 +0000 (12:01 +0100)]
bc: do not needlessly use strcat
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 10:43:17 +0000 (11:43 +0100)]
bc: unbreak "BC only" and "DC only" configs
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 10:31:14 +0000 (11:31 +0100)]
dc: re-enable "tiny dc" implementation
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 10:12:38 +0000 (11:12 +0100)]
bc: unbreak FEATURE_CLEAN_UP build
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 10:10:11 +0000 (11:10 +0100)]
bc: reuse common string
text data bss dec hex filename
987232 485 7296 995013 f2ec5 busybox_old
987205 485 7296 994986 f2eaa busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 09:29:12 +0000 (10:29 +0100)]
bc: hook up line editing with history buffer
function old new delta
push_input_byte - 65 +65
bc_vm_run 1875 1905 +30
bc_read_line 303 305 +2
bc_num_binary 148 150 +2
bc_num_ulong 103 92 -11
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/1 up/down: 99/-11) Total: 88 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 09:26:13 +0000 (10:26 +0100)]
bc: add preparatory indent block, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 08:20:32 +0000 (09:20 +0100)]
bc: if ^C handling is not selected, there is no interactive mode
function old new delta
packed_usage 33023 33076 +53
bc_num_s 252 246 -6
bc_vm_run 1859 1850 -9
bc_error_fmt 36 20 -16
bc_posix_error_fmt 58 41 -17
bc_read_line 202 168 -34
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/5 up/down: 53/-82) Total: -29 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Thu, 6 Dec 2018 08:07:06 +0000 (09:07 +0100)]
bc: fix "bc -v" printing version info twice, and not exiting
function old new delta
bc_args 123 130 +7
bc_num_binary 150 148 -2
static.nullptr 4 - -4
bc_vm_run 1883 1874 -9
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/2 up/down: 7/-15) Total: -8 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 23:46:09 +0000 (00:46 +0100)]
bc: make bc_vm_envArgs() NULL-terminate its argv, simplify bc_vm_envLen()
function old new delta
bc_num_ulong 92 103 +11
static.nullptr - 4 +4
bc_args 120 123 +3
static.bc_args_env_name 4 - -4
dc_main 49 41 -8
bc_main 49 41 -8
bc_vm_run 1917 1883 -34
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 2/3 up/down: 18/-54) Total: -36 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 23:29:22 +0000 (00:29 +0100)]
bc: if FEATURE_CLEAN_UP, clean up allocations on exits
Will have exitcode 1 even on "quit" and "halt", is it a problem?
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 21:40:44 +0000 (22:40 +0100)]
bc: do not allow "()" as a valid expression
function old new delta
bc_parse_expr_empty_ok - 2178 +2178
bc_parse_expr 2178 49 -2129
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 2178/-2129) Total: 49 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 20:15:46 +0000 (21:15 +0100)]
bc: reorder functions, delete forward declarations, no code changes - part 2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 20:03:16 +0000 (21:03 +0100)]
bc: reorder functions, delete forward declarations, no code changes
Pure block moves of text
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 19:33:23 +0000 (20:33 +0100)]
bc: remove unused strings
text data bss dec hex filename
987088 485 7296 994869 f2e35 busybox_old
987079 485 7296 994860 f2e2c busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 19:28:26 +0000 (20:28 +0100)]
bc: trivial simplification in bc_parse_return()
function old new delta
bc_parse_stmt 2276 2271 -5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 19:25:03 +0000 (20:25 +0100)]
bc: fix "warning: 's' may be used uninitialized in this function"
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 19:17:48 +0000 (20:17 +0100)]
bc: code shrink
function old new delta
bc_parse_expr 2151 2178 +27
bc_parse_exprs 60 - -60
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 2/0 up/down: 27/-60) Total: -33 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 18:37:19 +0000 (19:37 +0100)]
bc: code shrink
function old new delta
bc_parse_operator 181 184 +3
bc_parse_ops 50 25 -25
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 3/-25) Total: -22 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 18:21:34 +0000 (19:21 +0100)]
bc: make division operation interruptible
function old new delta
bc_num_d 564 584 +20
bc_num_r 230 245 +15
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 35/0) Total: 35 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 18:05:32 +0000 (19:05 +0100)]
bc: use unsigned division by 10 instead of signed
function old new delta
bc_num_k 990 988 -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 18:00:58 +0000 (19:00 +0100)]
bc: move ^C check fro power calculation to multiplication
function old new delta
bc_num_k 971 990 +19
bc_num_p 507 478 -29
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 19/-29) Total: -10 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 17:56:14 +0000 (18:56 +0100)]
bc: bc_num_k(): move carry,i,j,len to inner scope
This might help compiler
function old new delta
bc_num_k 957 971 +14
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 17:31:19 +0000 (18:31 +0100)]
bc: tweak error messages
function old new delta
bc_lex_token 1285 1299 +14
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 17:12:27 +0000 (18:12 +0100)]
bc: fix inverted POSIXness test, improve messages, commonalize message strings
function old new delta
bc_lex_token 1251 1285 +34
bc_POSIX_does_not_allow_bool_ops_this_is_bad - 25 +25
bc_POSIX_does_not_allow_empty_X_expression_in_for - 20 +20
bc_POSIX_does_not_allow - 20 +20
bc_parse_expr 2146 2151 +5
bc_num_ulong 103 92 -11
------------------------------------------------------------------------------
(add/remove: 3/0 grow/shrink: 2/1 up/down: 104/-11) Total: 93 bytes
text data bss dec hex filename
987210 485 7296 994991 f2eaf busybox_old
987084 485 7296 994865 f2e31 busybox_unstripped
^^^^^^^
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 16:48:01 +0000 (17:48 +0100)]
bc: print error line numbers
FILE:
print 1
print "
$ busybox bc -q FILE
bc: FILE:2: string end could not be found
ready for more input
>>> _
function old new delta
bc_verror_msg - 99 +99
bc_lex_file 12 28 +16
bc_lex_next 77 92 +15
dc_lex_token 687 701 +14
bc_lex_token 1237 1251 +14
bc_posix_error_fmt 90 58 -32
bc_error_fmt 70 36 -34
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 4/2 up/down: 158/-66) Total: 92 bytes
text data bss dec hex filename
987108 485 7296 994889 f2e49 busybox_old
987210 485 7296 994991 f2eaf busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 15:55:08 +0000 (16:55 +0100)]
bc: optimize pushing zero bytes to vectors
function old new delta
bc_vec_pushZeroByte - 10 +10
bc_vm_run 1919 1917 -2
bc_vec_string 61 59 -2
bc_vec_concat 68 66 -2
bc_parse_create 170 168 -2
bc_lex_number 298 296 -2
dc_lex_token 691 687 -4
bc_read_line 314 303 -11
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/7 up/down: 10/-25) Total: -15 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 15:39:22 +0000 (16:39 +0100)]
bc: restore printing of script name on errors
Examples:
On stdin, no file name is available:
$ echo 'print "' | busybox bc
bc: string end could not be found
When the same error is in file:
$ busybox bc FILE
bc 1.30.0.git
Copyright (c) 2018 Gavin D. Howard and contributors
Report bugs at: https://github.com/gavinhoward/bc
This is free software with ABSOLUTELY NO WARRANTY
FILE: string end could not be found
ready for more input
>>>
Line number printing to be added later...
function old new delta
bc_error_fmt 38 70 +32
bc_posix_error_fmt 60 90 +30
bc_vm_run 1900 1919 +19
bc_program_read 338 355 +17
bc_lex_file 15 12 -3
bc_program_stdin_name 8 - -8
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 4/1 up/down: 98/-11) Total: 87 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 15:21:43 +0000 (16:21 +0100)]
bc: do not check for errors when parsing/running internal library
function old new delta
bc_lib_name 4 - -4
bc_vm_run 1921 1900 -21
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/1 up/down: 0/-25) Total: -25 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 15:03:46 +0000 (16:03 +0100)]
bc: shrink error handling code by enabling tail-call optimization
function old new delta
bc_posix_error_fmt - 60 +60
bc_error_fmt - 38 +38
bc_error_bad_character - 17 +17
bc_parse_auto 302 313 +11
bc_num_ulong 93 103 +10
bc_error_variable_is_wrong_type - 10 +10
bc_error_stack_has_too_few_elements - 10 +10
bc_error_nested_read_call - 10 +10
bc_error_bad_token - 10 +10
bc_error_bad_expression - 10 +10
bc_num_d 561 564 +3
bc_program_assign 484 486 +2
dc_parse_parse 60 59 -1
bc_program_num 1130 1129 -1
bc_program_call 367 366 -1
bc_parse_stmt 2277 2276 -1
bc_lex_number 299 298 -1
bc_lex_name 91 90 -1
bc_func_insert 98 97 -1
bc_num_shift 74 72 -2
bc_vm_run 1924 1921 -3
bc_parse_endBody 424 420 -4
bc_lex_next 81 77 -4
bc_program_read 343 338 -5
bc_program_asciify 469 464 -5
bc_program_pushVar 221 215 -6
bc_program_print 784 778 -6
bc_program_prep 99 93 -6
bc_program_assignStr 167 161 -6
bc_parse_else 143 137 -6
bc_parse_body 124 118 -6
dc_parse_register 61 53 -8
dc_lex_token 699 691 -8
bc_program_modexp 756 746 -10
bc_parse_name 593 581 -12
dc_parse_expr 775 762 -13
bc_program_copyToVar 336 323 -13
bc_program_binOpPrep 324 311 -13
bc_program_execStr 561 543 -18
bc_program_exec 4150 4132 -18
bc_parse_parse 483 464 -19
bc_error 38 14 -24
bc_lex_token 1266 1237 -29
bc_posix_error 60 14 -46
bc_parse_expr 2194 2146 -48
------------------------------------------------------------------------------
(add/remove: 8/0 grow/shrink: 4/33 up/down: 191/-345) Total: -154 bytes
text data bss dec hex filename
987226 485 7296 995007 f2ebf busybox_old
987072 485 7296 994853 f2e25 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Wed, 5 Dec 2018 00:21:59 +0000 (01:21 +0100)]
bc: make 2^
1000000 interruptible faster
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 4 Dec 2018 23:35:49 +0000 (00:35 +0100)]
bc: remove tabs from internal library
function old new delta
bc_lib 1877 1674 -203
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 4 Dec 2018 23:22:34 +0000 (00:22 +0100)]
bc: store library in ASCII, shrink keyword parsing code
Also, use ARRAY_SIZE() where appropriate
function old new delta
bc_lib 1878 1877 -1
bc_program_index 66 64 -2
bc_lex_token 1282 1266 -16
bc_lex_kws 220 160 -60
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-79) Total: -79 bytes
text data bss dec hex filename
987518 485 7296 995299 f2fe3 busybox_old
987440 485 7296 995221 f2f95 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 4 Dec 2018 20:54:33 +0000 (21:54 +0100)]
bc: drop bc_map_init() macro
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 4 Dec 2018 20:46:47 +0000 (21:46 +0100)]
bc: create a few common functions
function old new delta
bc_char_vec_init - 12 +12
bc_vec_pop_all - 8 +8
bc_program_index 64 66 +2
bc_vec_string 64 61 -3
bc_vec_free 27 24 -3
bc_read_line 317 314 -3
bc_program_execStr 564 561 -3
bc_program_exec 4153 4150 -3
bc_program_copyToVar 340 336 -4
bc_parse_create 175 170 -5
dc_lex_token 705 699 -6
bc_program_reset 78 72 -6
bc_lex_number 305 299 -6
bc_program_read 353 343 -10
bc_program_addFunc 225 209 -16
bc_vm_run 1942 1924 -18
bc_parse_reset 181 163 -18
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 1/14 up/down: 22/-104) Total: -82 bytes
text data bss dec hex filename
987600 485 7296 995381 f3035 busybox_old
987518 485 7296 995299 f2fe3 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 4 Dec 2018 20:37:56 +0000 (21:37 +0100)]
bc: rewrite "BOOL * EXPR" idiom as if() statement
function old new delta
bc_program_index 66 64 -2
bc_program_num 1147 1130 -17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-19) Total: -19 bytes
text data bss dec hex filename
987619 485 7296 995400 f3048 busybox_old
987600 485 7296 995381 f3035 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 4 Dec 2018 20:21:32 +0000 (21:21 +0100)]
bc: switch to SA_RESTART signal handling
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 4 Dec 2018 19:58:40 +0000 (20:58 +0100)]
bc: get rid of G.tty and G.flags
G.flags == option_mask32
function old new delta
bc_args 97 120 +23
dc_main 48 49 +1
bc_main 48 49 +1
bc_error 42 38 -4
bc_posix_error 65 60 -5
bc_read_line 325 317 -8
dc_lex_token 714 705 -9
bc_vm_run 2039 1942 -97
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/5 up/down: 25/-123) Total: -98 bytes
text data bss dec hex filename
987717 485 7296 995498 f30aa busybox_old
987619 485 7296 995400 f3048 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 4 Dec 2018 19:51:40 +0000 (20:51 +0100)]
bc: convert all status codes, remove bc_err_msgs[], bc_vm_error(), bc_vm_posixError()
function old new delta
bc_posix_error - 65 +65
bc_vm_run 1995 2039 +44
bc_err_line 7 - -7
bc_num_ulong 103 93 -10
bc_parse_parse 495 483 -12
bc_err_fmt 12 - -12
bc_warn_fmt 14 - -14
bc_parse_expr 2210 2194 -16
bc_program_reset 105 78 -27
bc_vm_process 130 94 -36
bc_parse_stmt 2313 2277 -36
bc_err_msgs 60 - -60
bc_lex_token 1367 1282 -85
bc_vm_error 143 - -143
bc_vm_posixError 189 - -189
------------------------------------------------------------------------------
(add/remove: 1/6 grow/shrink: 1/7 up/down: 109/-647) Total: -538 bytes
text data bss dec hex filename
988258 485 7296 996039 f32c7 busybox_old
987717 485 7296 995498 f30aa busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 4 Dec 2018 19:05:28 +0000 (20:05 +0100)]
bc: convert all non-POSIX BC_STATUS_foo codes
function old new delta
bc_program_asciify - 469 +469
bc_parse_parse 432 495 +63
dc_parse_expr 727 775 +48
bc_vm_run 1955 1995 +40
bc_program_num 1115 1147 +32
bc_program_binOpPrep 296 324 +28
static.msg - 24 +24
bc_parse_name 570 593 +23
bc_lex_token 1344 1367 +23
dc_lex_token 695 714 +19
bc_num_ulong 85 103 +18
bc_program_read 336 353 +17
dc_parse_parse 47 60 +13
bc_parse_stmt 2301 2313 +12
bc_parse_auto 291 302 +11
bc_program_prep 89 99 +10
bc_lex_next 71 81 +10
dc_parse_register 52 61 +9
bc_program_print 775 784 +9
bc_func_insert 89 98 +9
bc_program_assignStr 159 167 +8
bc_program_assign 476 484 +8
bc_parse_body 116 124 +8
bc_lex_name 83 91 +8
bc_program_pushVar 215 221 +6
bc_parse_text 141 147 +6
bc_num_shift 68 74 +6
bc_num_p 472 478 +6
bc_program_execStr 559 564 +5
bc_parse_else 139 143 +4
bc_lex_number 301 305 +4
bc_num_d 558 561 +3
bc_parse_endBody 422 424 +2
bc_num_r 231 230 -1
bc_program_copyToVar 343 340 -3
bc_program_call 372 367 -5
bc_parse_expr 2215 2210 -5
bc_program_modexp 763 756 -7
bc_err_msgs 164 60 -104
bc_program_pushArray 136 - -136
bc_program_exec 4453 4153 -300
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 31/7 up/down: 961/-561) Total: 400 bytes
text data bss dec hex filename
987766 485 7296 995547 f30db busybox_old
988258 485 7296 996039 f32c7 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Tue, 4 Dec 2018 18:11:02 +0000 (19:11 +0100)]
bc: convert BC_STATUS_EXEC_SIGNAL - its message string was never used
function old new delta
bc_vm_process 132 130 -2
bc_err_msgs 168 164 -4
dc_parse_parse 52 47 -5
bc_parse_reset 187 181 -6
bc_program_ready_msg 22 - -22
bc_program_exec 4478 4453 -25
bc_parse_parse 461 432 -29
bc_program_reset 159 105 -54
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/7 up/down: 0/-147) Total: -147 bytes
text data bss dec hex filename
987923 485 7296 995704 f3178 busybox_old
987766 485 7296 995547 f30db busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 3 Dec 2018 20:46:41 +0000 (21:46 +0100)]
bc: convert BC_STATUS_PARSE_NO_AUTO
function old new delta
bc_parse_auto 275 291 +16
bc_err_msgs 172 168 -4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 16/-4) Total: 12 bytes
text data bss dec hex filename
987911 485 7296 995692 f316c busybox_old
987923 485 7296 995704 f3178 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 3 Dec 2018 20:10:57 +0000 (21:10 +0100)]
bc: convert BC_STATUS_EXEC_MISMATCHED_PARAMS and BC_STATUS_EXEC_UNDEFINED_FUNC
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 3 Dec 2018 19:35:16 +0000 (20:35 +0100)]
bc: BC_STATUS_VEC_ITEM_EXISTS is not a real error code, its message was never used
It was only used to indicate rusult of bc_map_insert() - did we insert, or
did we find that this key is already in the map?
function old new delta
bc_map_insert 142 145 +3
bc_program_addFunc 226 225 -1
bc_err_msgs 184 180 -4
bc_program_search 152 143 -9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: 3/-14) Total: -11 bytes
text data bss dec hex filename
987904 485 7296 995685 f3165 busybox_old
987873 485 7296 995654 f3146 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 3 Dec 2018 18:12:29 +0000 (19:12 +0100)]
bc: simplify bc_lex_comment()
function old new delta
bc_lex_token 1369 1344 -25
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 3 Dec 2018 15:06:02 +0000 (16:06 +0100)]
bc: handle BIN_FILE and LEX_BAD_CHAR errors at the site of detection
The most informative message can be generated at the location
where error is detected. The "error codes" are stupid:
print error meesage immediately, then just return "there was an error"
indicator.
All error codes will be converted. For now, converting these two.
For now, this and following changes will degrade error messages
quality. For example, file name and line number printouts may be lost.
This will be re-added later.
This change anlso fixes handling of invalid stdin input:
this used to cause interactive bc to exit:
....
>>> ς
bc: illegal character 0xcf
bc: illegal character 0x82
>>> _
function old new delta
bc_error - 42 +42
bc_lex_token 1333 1369 +36
dc_lex_token 675 695 +20
bc_read_line 311 325 +14
bc_num_a 456 454 -2
bc_err_msgs 188 184 -4
bc_num_ulong 95 85 -10
bc_vm_run 1984 1955 -29
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/4 up/down: 112/-45) Total: 67 bytes
text data bss dec hex filename
987828 485 7296 995609 f3119 busybox_old
987929 485 7296 995710 f317e busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 3 Dec 2018 13:28:51 +0000 (14:28 +0100)]
bc: eliminate BC_STATUS_INPUT_EOF
function old new delta
fflush_and_check - 36 +36
bc_num_a 445 456 +11
bc_num_ulong 85 95 +10
bc_vm_run 1978 1984 +6
bc_num_s 246 252 +6
bc_err_msgs 192 188 -4
quit 38 32 -6
bc_vm_process 139 132 -7
bc_program_reset 172 159 -13
bc_parse_create 192 175 -17
bc_read_line 349 311 -38
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 4/6 up/down: 69/-85) Total: -16 bytes
text data bss dec hex filename
987844 485 7296 995625 f3129 busybox_old
987828 485 7296 995609 f3119 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Mon, 3 Dec 2018 13:02:35 +0000 (14:02 +0100)]
bc: handle "limits" and "quit" immediately at parse time
No need to propagate a special exit code.
function old new delta
bc_parse_stmt 2197 2301 +104
quit - 38 +38
bc_read_line 344 349 +5
bc_program_reset 174 172 -2
bc_num_s 252 246 -6
bc_num_a 454 445 -9
bc_parse_parse 471 461 -10
bc_num_ulong 95 85 -10
bc_program_exec 4500 4478 -22
bc_vm_run 2006 1978 -28
bc_vm_process 291 139 -152
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 2/8 up/down: 147/-239) Total: -92 bytes
text data bss dec hex filename
987936 485 7296 995717 f3185 busybox_old
987844 485 7296 995625 f3129 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 2 Dec 2018 23:51:25 +0000 (00:51 +0100)]
bc": drop unused error codes and strings
function old new delta
bc_err_msgs 216 192 -24
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-24) Total: -24 bytes
text data bss dec hex filename
988122 485 7296 995903 f323f busybox_old
987936 485 7296 995717 f3185 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 2 Dec 2018 23:26:12 +0000 (00:26 +0100)]
bc: remove "error ids": serve no useful purpose, error message should be explanatory enough
function old new delta
bc_warn_fmt 17 14 -3
bc_err_fmt 15 12 -3
bc_vm_posixError 205 189 -16
bc_vm_error 156 138 -18
bc_errs 28 - -28
bc_err_ids 58 - -58
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 0/4 up/down: 0/-126) Total: -126 bytes
text data bss dec hex filename
988288 485 7296 996069 f32e5 busybox_old
988122 485 7296 995903 f323f busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 2 Dec 2018 23:08:59 +0000 (00:08 +0100)]
bc: reduce forward declarations
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 2 Dec 2018 20:02:54 +0000 (21:02 +0100)]
bc: use smaller datatypes for limits, match GNU bc 'limits' output
function old new delta
bc_vm_process 315 291 -24
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-24) Total: -24 bytes
text data bss dec hex filename
988303 485 7296 996084 f32f4 busybox_old
988273 485 7296 996054 f32d6 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 2 Dec 2018 19:57:17 +0000 (20:57 +0100)]
bc: better handle optional args of bc_program_pushVar()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 2 Dec 2018 19:34:03 +0000 (20:34 +0100)]
bc: tweak help text
-v is supported but not shown
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 2 Dec 2018 19:16:52 +0000 (20:16 +0100)]
bc: simplify bc_vm_stdin()
function old new delta
bc_vm_run 2020 2006 -14
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 2 Dec 2018 18:43:34 +0000 (19:43 +0100)]
bc: only check for ^C in bc_program_exec() main loop
Checking it in individual operations such as SQRT is not necessary
since they usually do not take very long to complete. We repeatedly return
to main loop.
TODO: re-add more fine-grained ^C checks - but only with examples where it is
actually needed. E.g. I suspect simplest ops like addition or compare won't need it.
function old new delta
bc_program_index 66 64 -2
bc_num_s 258 246 -12
bc_num_cmp 294 275 -19
bc_num_compare 84 59 -25
bc_num_subArrays 74 47 -27
bc_num_a 474 445 -29
bc_program_exec 4530 4500 -30
bc_num_p 518 472 -46
bc_num_d 604 558 -46
bc_num_k 1005 957 -48
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/10 up/down: 0/-284) Total: -284 bytes
text data bss dec hex filename
988601 485 7296 996382 f341e busybox_old
988317 485 7296 996098 f3302 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 2 Dec 2018 18:27:48 +0000 (19:27 +0100)]
bc: simpler calling convention for bc_read_file(), bc_program_search()
function old new delta
bc_vm_run 1854 2020 +166
bc_program_assign 482 476 -6
bc_program_pushVar 225 215 -10
bc_program_call 366 356 -10
bc_program_num 1126 1115 -11
bc_program_copyToVar 354 343 -11
bc_program_search 164 152 -12
bc_program_execStr 573 559 -14
bc_program_exec 4544 4530 -14
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/8 up/down: 166/-88) Total: 78 bytes
text data bss dec hex filename
988523 485 7296 996304 f33d0 busybox_old
988601 485 7296 996382 f341e busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 2 Dec 2018 17:44:40 +0000 (18:44 +0100)]
bc: bc_num_ulong2num(), bc_program_pushGlobal(), bc_program_stackLen() never fail
function old new delta
bc_num_ulong2num 66 62 -4
bc_num_printNum 572 563 -9
bc_program_exec 4562 4544 -18
bc_program_num 1147 1126 -21
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-52) Total: -52 bytes
text data bss dec hex filename
988575 485 7296 996356 f3404 busybox_old
988523 485 7296 996304 f33d0 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko [Sun, 2 Dec 2018 17:26:38 +0000 (18:26 +0100)]
bc: stop passing around pointers to G.prog, they are all constant
function old new delta
bc_program_exec 4523 4562 +39
bc_program_assign 450 482 +32
bc_program_assignStr 131 159 +28
bc_program_print 762 775 +13
bc_program_num 1134 1147 +13
bc_program_search 154 164 +10
bc_num_ulong 85 95 +10
dc_parse_expr 719 727 +8
bc_program_retire 34 40 +6
bc_program_reset 168 174 +6
bc_program_binOpRetire 50 56 +6
bc_program_addFunc 220 226 +6
bc_program_prep 88 89 +1
dc_parse_init 18 17 -1
bc_program_copyToVar 355 354 -1
bc_parse_text 142 141 -1
bc_parse_number 88 87 -1
bc_parse_init 18 17 -1
bc_parse_endBody 423 422 -1
common_parse_init 29 26 -3
bc_parse_string 103 100 -3
bc_parse_addFunc 44 41 -3
bc_program_call 371 366 -5
bc_program_binOpPrep 301 296 -5
bc_program_read 342 336 -6
bc_parse_create 198 192 -6
bc_program_pushArray 143 136 -7
bc_parse_reset 194 187 -7
bc_vm_process 323 315 -8
bc_program_pushVar 236 225 -11
bc_vm_run 1872 1854 -18
bc_parse_name 590 570 -20
bc_program_execStr 594 573 -21
bc_program_modexp 793 763 -30
bc_program_printStream 172 - -172
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 13/21 up/down: 178/-331) Total: -153 bytes
text data bss dec hex filename
988728 485 7296 996509 f349d busybox_old
988575 485 7296 996356 f3404 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>