Denys Vlasenko
23ea0734e1
bc: rename BC_LEX_NLINE/WHITESPACE/STR/NAME/NUMBER to XC_LEX_
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24 15:05:49 +01:00
Denys Vlasenko
9d9c97efbd
bc: separate many bc and dc LEX constants
...
function old new delta
zdc_parse_expr 510 516 +6
bc_parse_expr_empty_ok 1963 1966 +3
dc_LEX_to_INST 83 56 -27
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 9/-27) Total: -18 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24 15:00:56 +01:00
Denys Vlasenko
69560f42da
bc: rename several BC_LEX_OPs to XC_LEX_OPs.
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24 14:14:23 +01:00
Denys Vlasenko
abf6cf6765
bc: move BC_LEX_OP_INC/DEC to the end of operation LEX constants
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24 13:20:57 +01:00
Denys Vlasenko
7d9be0bc6d
bc: rename BC_LEXs to XC_LEXs for common constants, and to DC_LEXs for dc-specific
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24 12:25:20 +01:00
Denys Vlasenko
2097ac8d9e
bc: move functions/macros around, no code changes
...
Order now is:
enums/structures/defines,
utility/common functions,
parsing,
execution,
main loop,
main()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24 05:00:36 +01:00
Denys Vlasenko
a7732d1120
bc: rename common INST constants to XC_, dc-specific ones to DC_
...
This will assist in disentangling dc and bc LEX constants
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24 04:26:07 +01:00
Denys Vlasenko
81293c8af0
dc: without -x, do not parse extended regs: 's p' means: store to ' ' reg, print
...
function old new delta
zbc_lex_next 2240 2233 -7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-7) Total: -7 bytes
text data bss dec hex filename
981437 485 7296 989218 f1822 busybox_old
981412 485 7296 989193 f1809 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24 02:01:32 +01:00
Denys Vlasenko
73b2c60825
bc: fix incorrect bit in BC_PARSE_EXPRS_BITS: 'limits' is not allowed
...
Alsl, move and rename dc_lex_tokens[] to dc_char_to_LEX[]
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24 01:04:21 +01:00
Denys Vlasenko
ad0bd381e9
bc: for "dc only" remove handling of LAST, move OBASE enums up to IBASE
...
function old new delta
dc_LEX_to_INST - 82 +82
bc_parse_pushNUM - 62 +62
zbc_program_num 981 978 -3
bc_result_free 46 43 -3
zbc_program_binOpPrep 305 300 -5
static.msg 24 12 -12
zbc_program_exec 4013 3994 -19
zdc_parse_expr 583 507 -76
dc_parse_insts 83 - -83
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 0/6 up/down: 144/-201) Total: -57 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-24 00:50:32 +01:00
Denys Vlasenko
9471bd4660
bc: fix empty lines in dc generating "bad token" message
...
function old new delta
zdc_program_asciify - 370 +370
zbc_program_pushArray - 147 +147
zbc_vm_process 824 828 +4
zbc_program_exec 4182 4046 -136
zdc_program_printStream 146 - -146
zbc_program_read 268 - -268
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 1/1 up/down: 521/-550) Total: -29 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-23 00:13:15 +01:00
Denys Vlasenko
01eb5e9da1
bc: shrink modular exponentiation code
...
function old new delta
zdc_program_modexp 721 694 -27
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 23:59:21 +01:00
Denys Vlasenko
1acac7f9c5
bc: do not yet allow 2^2.1
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 23:14:48 +01:00
Denys Vlasenko
a9f59db809
bc: avoid having to twiddle b->neg in zbc_num_p()
...
function old new delta
zbc_num_ulong_abs - 70 +70
zbc_num_p 424 413 -11
zbc_num_ulong 81 21 -60
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/2 up/down: 70/-71) Total: -1 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 21:52:30 +01:00
Denys Vlasenko
2ea8ddf8c2
bc: do not disallow powers to N.0000 degree - it's even shorter code
...
function old new delta
zbc_num_p 440 424 -16
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 21:45:18 +01:00
Denys Vlasenko
1557b76edd
bc: shrink zbc_num_ulong()
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 21:37:46 +01:00
Denys Vlasenko
ec74a9c145
bc: make long-running dc drop data it does not need (when it can)
...
function old new delta
zbc_vm_process 765 824 +59
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 19:23:46 +01:00
Denys Vlasenko
5cf0b2d466
bc: unbreak "z function" macro machinery
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 18:24:19 +01:00
Denys Vlasenko
badf683b0a
dc: unbreak interactive mode - was trying to get next tokens instead of executing
...
function old new delta
zbc_program_read - 268 +268
zdc_program_printStream - 146 +146
zbc_program_exec 4046 4182 +136
zdc_program_execStr 472 512 +40
zdc_parse_exprs_until_eof - 26 +26
zbc_vm_process 740 765 +25
zbc_lex_next 2225 2240 +15
zdc_parse_expr 569 535 -34
zbc_program_pushArray 147 - -147
zdc_program_asciify 370 - -370
------------------------------------------------------------------------------
(add/remove: 3/2 grow/shrink: 4/1 up/down: 656/-551) Total: 105 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 18:10:50 +01:00
Denys Vlasenko
5daa1a0adf
bc: move zbc_lex_next() out of zdc_parse_string() and zdc_parse_mem()
...
function old new delta
zdc_parse_mem 99 93 -6
zdc_parse_expr 586 569 -17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-23) Total: -23 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 16:41:23 +01:00
Denys Vlasenko
7c1c9dc86b
bc: shorten sanity-check code
...
function old new delta
zbc_vm_process 745 740 -5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 14:18:47 +01:00
Denys Vlasenko
88fcd5cc6c
bc: fold single-callsite functions into callers, commonalize code
...
function old new delta
zbc_vm_process 699 745 +46
zbc_parse_stmt_possibly_auto 1689 1682 -7
bc_parse_reset 113 - -113
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/1 up/down: 46/-120) Total: -74 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 06:00:25 +01:00
Denys Vlasenko
514967df5e
bc: zcommon_parse_expr() has only one user, fold it in
...
function old new delta
zbc_program_exec 4021 4046 +25
zdc_parse_expr 589 586 -3
zcommon_parse_expr 28 - -28
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/1 up/down: 25/-31) Total: -6 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 03:38:52 +01:00
Denys Vlasenko
f093e3df2d
bc: zcommon_parse_expr() lost its flags argument
...
function old new delta
zcommon_parse_expr - 28 +28
zdc_program_execStr 474 472 -2
zbc_program_exec 4023 4021 -2
common_parse_expr 29 - -29
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/2 up/down: 28/-33) Total: -5 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 02:30:18 +01:00
Denys Vlasenko
39287e0d02
bc: stop using BC_PARSE_NOCALL in dc code
...
function old new delta
zdc_program_execStr 465 474 +9
zbc_vm_process 701 699 -2
common_parse_expr 32 29 -3
zdc_parse_expr 615 586 -29
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: 9/-34) Total: -25 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 02:23:08 +01:00
Denys Vlasenko
8c1e723596
bc: unbreak read(), remove checks for nested read()
...
function old new delta
zbc_parse_pushSTR - 65 +65
common_parse_expr - 32 +32
bc_error_nested_read_call 10 - -10
bc_parse_expr_empty_ok 1977 1963 -14
zdc_parse_expr 635 615 -20
zcommon_parse_expr 32 - -32
zbc_program_exec 4064 4023 -41
bc_parse_pushSTR 65 - -65
------------------------------------------------------------------------------
(add/remove: 2/3 grow/shrink: 0/3 up/down: 97/-182) Total: -85 bytes
text data bss dec hex filename
981661 485 7296 989442 f1902 busybox_old
981540 485 7296 989321 f1889 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-22 01:34:10 +01:00
Denys Vlasenko
1dc4de9d9b
bc: code shrink
...
function old new delta
bc_result_pop_and_push - 73 +73
zbc_program_exec 4068 4064 -4
bc_program_binOpRetire 46 32 -14
zdc_program_assignStr 146 126 -20
zdc_program_asciify 395 370 -25
bc_program_retire 35 7 -28
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/5 up/down: 73/-91) Total: -18 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-21 23:13:48 +01:00
Denys Vlasenko
24e4194635
bc: rename BcInstPtr::idx and ::len
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-21 23:01:26 +01:00
Denys Vlasenko
8287b1c869
bc: remove unnecessary initializations
...
function old new delta
zdc_program_asciify 403 395 -8
zbc_program_print 691 683 -8
zbc_program_exec 4079 4068 -11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-27) Total: -27 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-21 22:43:53 +01:00
Denys Vlasenko
e8e7bda63a
bc: use non-allocated BcNum's where appropriate
...
function old new delta
zbc_num_printNum 540 543 +3
zdc_program_asciify 407 403 -4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 3/-4) Total: -1 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-21 22:36:04 +01:00
Denys Vlasenko
6ed7fb0a87
bc: optimize bc_vec_push() usage
...
function old new delta
bc_parse_pushNUM 87 80 -7
zbc_parse_stmt_possibly_auto 1697 1689 -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-15) Total: -15 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-21 22:16:17 +01:00
Denys Vlasenko
19eee8ed7c
bc: fix for() to not leave data on stack
...
function old new delta
zbc_parse_stmt_possibly_auto 1665 1697 +32
zbc_vm_process 672 701 +29
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 61/0) Total: 61 bytes
text data bss dec hex filename
981656 485 7296 989437 f18fd busybox_old
981748 485 7296 989529 f1959 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-21 20:29:34 +01:00
Denys Vlasenko
5d57bc442d
bc: fix infinite state growth for "yes 1 | bc" case
...
function old new delta
zbc_vm_process 585 672 +87
bc_func_init 50 86 +36
zbc_program_num 990 1022 +32
bc_program_str 17 47 +30
bc_program_current_func - 22 +22
bc_parse_pushNUM 66 87 +21
bc_func_free 27 43 +16
zbc_num_binary 145 147 +2
bc_program_reset 64 61 -3
bc_parse_pushSTR 73 65 -8
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 7/2 up/down: 246/-11) Total: 235 bytes
text data bss dec hex filename
981393 485 7296 989174 f17f6 busybox_old
981656 485 7296 989437 f18fd busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-21 16:22:26 +01:00
Denys Vlasenko
447dc02c27
bc: fix comment
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-21 00:39:02 +01:00
Denys Vlasenko
52caa007e3
bc: for(;;) fix from upstream
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-21 00:35:22 +01:00
Denys Vlasenko
047154472a
bc: shrink bc_program_add_fn()
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-21 00:10:26 +01:00
Denys Vlasenko
44a99ca617
bc: "dc only" config does not need G.prog.fn_map
...
function old new delta
bc_program_add_fn - 43 +43
bc_vm_init 655 675 +20
bc_program_addFunc 138 118 -20
zdc_parse_expr 658 635 -23
zdc_program_asciify 447 407 -40
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/3 up/down: 63/-83) Total: -20 bytes
text data bss dec hex filename
984739 489 7312 992540 f251c busybox_old
984712 489 7312 992513 f2501 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-20 20:34:09 +01:00
Denys Vlasenko
5acd14ba5b
bc: fix keyword matching to not think "ifz" is the "if" keyword
...
function old new delta
zbc_lex_next 2224 2225 +1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-20 16:48:50 +01:00
Denys Vlasenko
503faf9d53
bc: shrink "dc only" code by dropping unused structure members
...
function old new delta
zbc_program_num 979 981 +2
zbc_program_pushArray 147 145 -2
bc_program_pushVar 198 196 -2
bc_program_func 17 15 -2
dc_num_printChar 24 21 -3
bc_program_retire 35 32 -3
bc_program_binOpRetire 46 43 -3
zdc_program_printStream 153 148 -5
zbc_program_prep 91 86 -5
zbc_program_copyToVar 300 295 -5
zdc_program_modexp 721 715 -6
zbc_program_binOpPrep 311 305 -6
bc_program_addFunc 138 132 -6
bc_num_printNewline 51 45 -6
bc_num_printHex 67 61 -6
bc_num_printDigits 137 131 -6
zdc_program_assignStr 146 137 -9
bc_program_reset 64 55 -9
bc_func_free 27 5 -22
bc_parse_free 38 8 -30
bc_parse_create 92 47 -45
bc_func_init 50 5 -45
dc_main 691 645 -46
zdc_program_execStr 496 442 -54
zbc_program_print 677 623 -54
zbc_vm_process 204 137 -67
zbc_program_exec 4132 4057 -75
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/26 up/down: 2/-522) Total: -520 bytes
text data bss dec hex filename
969767 485 7296 977548 eea8c busybox_old
969210 485 7296 976991 ee85f busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-20 16:24:18 +01:00
Denys Vlasenko
eaa3b00002
bc: shorten bc_program_addFunc()
...
function old new delta
bc_func_init - 50 +50
bc_program_addFunc 201 138 -63
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/1 up/down: 50/-63) Total: -13 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 20:05:50 +01:00
Denys Vlasenko
408b7d45f6
bc: fix "dc only" and "bc only" configs
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 19:43:03 +01:00
Denys Vlasenko
fa21079183
bc: rename dc-specific functions, simplify zdc_program_execStr() a bit
...
function old new delta
zbc_program_execStr 496 - -496
zdc_program_execStr - 491 +491
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 19:38:51 +01:00
Denys Vlasenko
44dbe675dd
bc: rename zbc_parse_string->bc_parse_pushSTR, do not emit next opcode in it
...
function old new delta
bc_parse_pushSTR - 73 +73
zbc_parse_stmt_possibly_auto 1638 1640 +2
zbc_parse_string 89 - -89
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 1/0 up/down: 75/-89) Total: -14 bytes
text data bss dec hex filename
981377 485 7296 989158 f17e6 busybox_old
981363 485 7296 989144 f17d8 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 19:10:40 +01:00
Denys Vlasenko
ea5cad2a0d
bc: avoid bc_vec_item() calls in bc_vm_run()
...
function old new delta
bc_vm_run 124 112 -12
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 18:09:31 +01:00
Denys Vlasenko
eac0de55d6
bc: avoid bc_vec_item() calls in bc_array_copy()
...
function old new delta
zbc_program_copyToVar 311 300 -11
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 17:59:30 +01:00
Denys Vlasenko
87888ce4d8
bc: avoid successive bc_vec_item(&func->autos, i)
...
function old new delta
zbc_func_insert 97 100 +3
zbc_program_call 353 354 +1
zbc_program_exec 4085 4078 -7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 4/-7) Total: -3 bytes
text data bss dec hex filename
981403 485 7296 989184 f1800 busybox_old
981400 485 7296 989181 f17fd busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 17:55:23 +01:00
Denys Vlasenko
f36a0adf8b
bc: remove unnecessary union use
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 17:15:04 +01:00
Denys Vlasenko
dfe1dd2031
bc: "unsigned_n > 0" is shorter code than "unsigned_n >= 1"
...
function old new delta
zbc_program_print 680 677 -3
zbc_program_exec 4089 4085 -4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-7) Total: -7 bytes
text data bss dec hex filename
981404 485 7296 989185 f1801 busybox_old
981397 485 7296 989178 f17fa busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 17:09:01 +01:00
Denys Vlasenko
65e1046abf
bc: open-code bc_parse_updateFunc() macro
...
This clearly shows one place which would need changing
for nested funcdefs to work.
function old new delta
bc_parse_reset 106 110 +4
zbc_vm_process 586 585 -1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 4/-1) Total: 3 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 15:13:14 +01:00
Denys Vlasenko
684d441f5c
bc: make bc_program_addFunc() return new idx, untangle &p->fidx interaction
...
In:
bc_program_addFunc(name, idx);
p->func = bc_program_func(p->fidx);
in some cases p->fidx was updated by _first_ statement - because passed idx
was pointing at it. This was very obscure.
function old new delta
zdc_parse_expr 653 658 +5
bc_program_addFunc 204 201 -3
zbc_vm_process 594 586 -8
bc_vm_init 663 655 -8
zbc_parse_name 482 472 -10
bc_parse_addFunc 25 - -25
zbc_program_asciify 473 447 -26
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/5 up/down: 5/-80) Total: -75 bytes
text data bss dec hex filename
981482 485 7296 989263 f184f busybox_old
981401 485 7296 989182 f17fe busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 14:59:22 +01:00
Denys Vlasenko
085b420220
bc: "reload stack only after insts" change missed a few places
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 14:02:59 +01:00
Denys Vlasenko
5aa54830bf
bc: rename a few functions
...
function old new delta
bc_map_find_ge - 71 +71
bc_map_find_exact - 50 +50
bc_map_index 50 - -50
bc_map_find 71 - -71
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 0/0 up/down: 121/-121) Total: 0 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 13:55:53 +01:00
Denys Vlasenko
e3d3d2067d
bc: remove redundant strdup+free in zbc_parse_call()
...
function old new delta
zbc_parse_name 527 482 -45
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-45) Total: -45 bytes
text data bss dec hex filename
981541 485 7296 989322 f188a busybox_old
981486 485 7296 989267 f1853 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 13:20:02 +01:00
Denys Vlasenko
4796a1d537
bc: delete G.prog.strmb for real
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 12:48:16 +01:00
Denys Vlasenko
b80d7aad1b
bc: in execution loop, reload stack only after insts which can change it
...
Only these functions affect G.prog.exestack:
zbc_program_read
zbc_program_call
zbc_program_return
zbc_program_nquit
zbc_program_execStr
function old new delta
zbc_program_exec 3995 4093 +98
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 98/0) Total: 98 bytes
text data bss dec hex filename
981364 485 7296 989145 f17d9 busybox_old
981462 485 7296 989243 f183b busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-19 12:35:27 +01:00
Denys Vlasenko
d6e24bd795
bc: simplify bc_array_expand()
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 20:10:48 +01:00
Denys Vlasenko
30a8e0c2f9
bc: code shrink
...
function old new delta
zbc_program_print 684 680 -4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-4) Total: -4 bytes
text data bss dec hex filename
981368 485 7296 989149 f17dd busybox_old
981364 485 7296 989145 f17d9 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 19:20:04 +01:00
Denys Vlasenko
694d2982e5
bc: code shrink
...
function old new delta
bc_program_name 67 63 -4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-4) Total: -4 bytes
text data bss dec hex filename
981372 485 7296 989153 f17e1 busybox_old
981368 485 7296 989149 f17dd busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 19:17:11 +01:00
Denys Vlasenko
7b30bc0222
bc: shrink bc_program_pushVar()
...
function old new delta
bc_program_pushVar 203 198 -5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 17:14:34 +01:00
Denys Vlasenko
d340143247
bc: get rid of G.prog.ob, G.prog.strmb
...
function old new delta
zbc_num_printNum 489 540 +51
zbc_program_asciify 426 473 +47
zbc_program_print 686 684 -2
zbc_program_exec 4008 3995 -13
zbc_program_assign 474 440 -34
bc_vm_init 739 663 -76
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/4 up/down: 98/-125) Total: -27 bytes
text data bss dec hex filename
981404 485 7296 989185 f1801 busybox_old
981377 485 7296 989158 f17e6 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 17:00:35 +01:00
Denys Vlasenko
09fe0aaefa
bc: do not show -i in --help, it's a NOP (for now)
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 16:32:25 +01:00
Denys Vlasenko
7f2d59c38d
bc: style edit, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 16:24:07 +01:00
Denys Vlasenko
3f940c9c70
bc: shrink bc_program_index()
...
function old new delta
bc_program_index 66 47 -19
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-19) Total: -19 bytes
text data bss dec hex filename
981418 485 7296 989199 f180f busybox_old
981399 485 7296 989180 f17fc busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 15:49:42 +01:00
Denys Vlasenko
55f3cab7e9
bc: fix "echo -n '#foo' | bc" not eating last 'o'
...
function old new delta
zdc_parse_expr 656 653 -3
bc_lex_lineComment 39 36 -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-6) Total: -6 bytes
text data bss dec hex filename
981424 485 7296 989205 f1815 busybox_old
981418 485 7296 989199 f180f busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 14:39:33 +01:00
Denys Vlasenko
a199cc95b7
bc: shrink zdc_parse_expr()
...
function old new delta
zdc_parse_expr 656 653 -3
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 14:11:35 +01:00
Denys Vlasenko
07597cd35d
bc: optimize zbc_lex_string()
...
function old new delta
zbc_lex_next 2359 2353 -6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 14:03:20 +01:00
Denys Vlasenko
ef271da33f
bc: shrink zdc_lex_string()
...
This actually fixes a rather obscure bug. This was failing to find
end of the string:
$ echo -n '[foo]' | dc
dc: string end could not be found
function old new delta
zbc_lex_next 2230 2141 -89
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-89) Total: -89 bytes
text data bss dec hex filename
981461 485 7296 989242 f183a busybox_old
981372 485 7296 989153 f17e1 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 13:48:37 +01:00
Denys Vlasenko
d4258dd321
bc: another for() loop simplified
...
function old new delta
zbc_program_print 688 686 -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 13:22:23 +01:00
Denys Vlasenko
5c0c5abba0
bc: simplify another for() loop
...
function old new delta
zbc_num_d 563 557 -6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 13:15:55 +01:00
Denys Vlasenko
6b0fbd14fc
bc: rewrite more for() loops
...
function old new delta
bc_program_name 75 67 -8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 12:55:40 +01:00
Denys Vlasenko
71c82d1d8c
bc: rewrite another for() loop
...
function old new delta
zbc_num_d 570 563 -7
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 12:43:21 +01:00
Denys Vlasenko
e2e6ffd3c5
bc: replace signed division / 10 by unsigned
...
function old new delta
zbc_num_a 443 441 -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 12:23:16 +01:00
Denys Vlasenko
4113e1f2cd
bc: rewrite bc_num_compare() to be readable
...
function old new delta
bc_num_compare 59 51 -8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 03:30:23 +01:00
Denys Vlasenko
57734c926b
bc: fold zbc_num_stream() into its single caller
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 03:30:23 +01:00
Denys Vlasenko
f6e3f8511e
bc: get rid of BcNum BcProgram::ib,hexb
...
function old new delta
zbc_program_num 907 943 +36
zbc_program_assign 485 474 -11
bc_vm_init 757 739 -18
bc_num_ten 30 - -30
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/2 up/down: 36/-59) Total: -23 bytes
text data bss dec hex filename
981532 485 7296 989313 f1881 busybox_old
981509 485 7296 989290 f186a busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 03:30:23 +01:00
Denys Vlasenko
0f31a5c79e
bc: fixes to bugs found while testing 64-bit build
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 03:16:48 +01:00
Denys Vlasenko
f4f10720fe
bc: fixed from 64-bit compile
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-18 02:23:53 +01:00
Denys Vlasenko
4b72aebe80
bc: remove "error after expression parsing" check
...
It is misplaced: caller knows better what can or cannot follow the expression.
Sometimes even caller's caller: "if (1) return a+b else..." -
parser of "return" does not know that "else" after it is valid,
parser of stmt does not know it either, - only parser of
"if" knows it!
The removed code balked on e.g. "{ print 1 }" statement.
This does not break any valid programs, but starts accepting some
invalid ones, e.g. "print 1 print 2" would work.
function old new delta
zcommon_parse_expr 40 32 -8
zbc_parse_name 509 494 -15
zbc_parse_stmt_possibly_auto 1678 1638 -40
bc_parse_expr_empty_ok 2025 1977 -48
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-111) Total: -111 bytes
text data bss dec hex filename
981599 485 7296 989380 f18c4 busybox_old
981488 485 7296 989269 f1855 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-17 17:00:29 +01:00
Denys Vlasenko
b44a7f1d66
bc: tighten up input NUL handling
...
function old new delta
static.dc_lex_tokens - 90 +90
bc_error_bad_character 17 31 +14
static.dc_lex_regs - 13 +13
bc_read_line 406 410 +4
bc_program_index 64 66 +2
dc_lex_regs 13 - -13
zdc_parse_expr 671 656 -15
zbc_lex_next 2318 2230 -88
dc_lex_tokens 91 - -91
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 3/2 up/down: 123/-207) Total: -84 bytes
text data bss dec hex filename
981667 485 7296 989448 f1908 busybox_old
981599 485 7296 989380 f18c4 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-17 11:58:20 +01:00
Denys Vlasenko
e42cc19b51
bc: simplify zdc_parse_string()
...
function old new delta
bc_program_index 64 66 +2
zdc_parse_expr 671 656 -15
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 2/-15) Total: -13 bytes
text data bss dec hex filename
981667 485 7296 989448 f1908 busybox_old
981655 485 7296 989436 f18fc busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-17 11:02:26 +01:00
Denys Vlasenko
59d4ce935e
bc: use common strings
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-17 10:42:31 +01:00
Denys Vlasenko
ec60318f15
bc: tidy up "z-function" macro machinery
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-17 10:34:02 +01:00
Denys Vlasenko
e4ba4c4371
bc: parse file arguments piecemeal (do not read entire file)
...
function old new delta
bc_read_line 336 406 +70
zbc_vm_execute_FILE - 67 +67
zbc_lex_next 2309 2318 +9
zbc_program_exec 4002 4008 +6
bc_program_index 66 64 -2
bc_vm_run 139 124 -15
zbc_vm_file 208 32 -176
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/3 up/down: 152/-193) Total: -41 bytes
text data bss dec hex filename
981736 485 7296 989517 f194d busybox_old
981667 485 7296 989448 f1908 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-17 09:51:43 +01:00
Denys Vlasenko
c5774a3458
bc: move fflush to the _actual_ execution loop
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-17 01:22:53 +01:00
Denys Vlasenko
51b22b1bce
bc: fix typo: defone -> define
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-17 00:15:35 +01:00
Denys Vlasenko
94f72a387c
bc: factor out common code
...
function old new delta
zbc_parse_stmt_allow_NLINE_before - 59 +59
bc_parse_pushJUMP_ZERO - 27 +27
bc_parse_pushJUMP - 27 +27
rewrite_label_to_current - 19 +19
zbc_vm_process 594 599 +5
zbc_lex_next_and_skip_NLINE 22 - -22
zbc_parse_stmt_fail_if_bare_NLINE 28 - -28
zbc_parse_stmt_possibly_auto 1909 1678 -231
------------------------------------------------------------------------------
(add/remove: 4/2 grow/shrink: 1/1 up/down: 137/-281) Total: -144 bytes
text data bss dec hex filename
981879 485 7296 989660 f19dc busybox_old
981755 485 7296 989536 f1960 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-17 00:07:48 +01:00
Denys Vlasenko
5ebd2a6128
bc: remove use of "BcInstPtr ip" object from loop parsing
...
function old new delta
zbc_parse_stmt_possibly_auto 1964 1909 -55
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-55) Total: -55 bytes
text data bss dec hex filename
981934 485 7296 989715 f1a13 busybox_old
981879 485 7296 989660 f19dc busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-16 23:35:04 +01:00
Denys Vlasenko
266aa00012
bc: store only index in p->exits, it's the only thing used there
...
function old new delta
zbc_parse_stmt_possibly_auto 1967 1964 -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-3) Total: -3 bytes
text data bss dec hex filename
981937 485 7296 989718 f1a16 busybox_old
981934 485 7296 989715 f1a13 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-16 23:24:25 +01:00
Denys Vlasenko
8e7686e457
bc: p->exits.func is never zero, do not check for that
...
function old new delta
zbc_parse_stmt_possibly_auto 1978 1967 -11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-11) Total: -11 bytes
text data bss dec hex filename
981948 485 7296 989729 f1a21 busybox_old
981937 485 7296 989718 f1a16 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-16 23:18:28 +01:00
Denys Vlasenko
de24e9d366
bc: remove redundant JUMP generation when parsing 'while'
...
function old new delta
zbc_parse_stmt_possibly_auto 2065 2025 -40
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-40) Total: -40 bytes
text data bss dec hex filename
982035 485 7296 989816 f1a78 busybox_old
981995 485 7296 989776 f1a50 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-16 23:02:22 +01:00
Denys Vlasenko
06ade77002
bc: simplify use of "ip" in loop parsing functions
...
function old new delta
zbc_parse_stmt_possibly_auto 2106 2065 -41
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-41) Total: -41 bytes
text data bss dec hex filename
982076 485 7296 989857 f1aa1 busybox_old
982035 485 7296 989816 f1a78 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-16 22:44:51 +01:00
Denys Vlasenko
146a79d19c
bc: shring bc_lib[]
...
function old new delta
bc_lib 1586 1584 -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-16 21:46:11 +01:00
Denys Vlasenko
15850832be
bc: shrink zbc_parse_if() a bit more
...
function old new delta
zbc_parse_stmt_possibly_auto 2180 2106 -74
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-74) Total: -74 bytes
text data bss dec hex filename
982152 485 7296 989933 f1aed busybox_old
982078 485 7296 989859 f1aa3 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-16 21:41:17 +01:00
Denys Vlasenko
6b5b46f817
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>
2018-12-16 21:29:08 +01:00
Denys Vlasenko
7415633128
bc: preparation to stop using p->exits when parsing if()
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-16 21:21:27 +01:00
Denys Vlasenko
5d18f6be90
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>
2018-12-16 21:08:30 +01:00
Denys Vlasenko
cb18b546f7
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>
2018-12-16 20:46:15 +01:00
Denys Vlasenko
2e8be023cb
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>
2018-12-16 20:41:32 +01:00
Denys Vlasenko
e6c40c48d9
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>
2018-12-16 20:32:58 +01:00
Denys Vlasenko
563d93c9a4
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>
2018-12-16 19:47:40 +01:00
Denys Vlasenko
a50576a415
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>
2018-12-16 19:21:57 +01:00
Denys Vlasenko
6d29879c67
bc: fold bc_parse_noElse() into its only caller
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-16 19:10:38 +01:00
Denys Vlasenko
9dc5d08baa
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>
2018-12-16 18:43:51 +01:00
Denys Vlasenko
202dd1943c
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>
2018-12-16 17:30:35 +01:00
Denys Vlasenko
e9519e44a6
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>
2018-12-16 17:06:07 +01:00
Denys Vlasenko
d1d29b4245
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>
2018-12-16 16:10:38 +01:00
Denys Vlasenko
99b3762335
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>
2018-12-15 20:06:59 +01:00
Denys Vlasenko
fd51e0c4d2
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>
2018-12-15 15:07:14 +01:00
Denys Vlasenko
7db384338a
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>
2018-12-15 00:49:16 +01:00
Denys Vlasenko
f10f17f8d3
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>
2018-12-14 23:41:33 +01:00
Denys Vlasenko
0154d78738
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>
2018-12-14 23:32:51 +01:00
Denys Vlasenko
7b1df3db97
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>
2018-12-14 23:12:48 +01:00
Denys Vlasenko
17df882a57
bx: add more debug scaffolding
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-14 23:00:24 +01:00
Denys Vlasenko
2ea53a45b7
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>
2018-12-14 17:51:17 +01:00
Denys Vlasenko
f86e960e7c
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>
2018-12-14 17:02:27 +01:00
Denys Vlasenko
0a23814e98
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>
2018-12-14 16:48:34 +01:00
Denys Vlasenko
8226912b2c
bc: remove stale comment, empty lines, regularize comment style
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-14 16:30:56 +01:00
Denys Vlasenko
87b49beeda
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>
2018-12-14 16:24:01 +01:00
Denys Vlasenko
240d7ee3fc
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>
2018-12-14 11:27:09 +01:00
Denys Vlasenko
fc9d26902b
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>
2018-12-14 11:00:23 +01:00
Denys Vlasenko
c06537d9bb
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>
2018-12-14 10:10:37 +01:00
Denys Vlasenko
203210e253
bc: shrink internal library more
...
function old new delta
bc_lib 1618 1609 -9
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-14 09:53:50 +01:00
Denys Vlasenko
3ac0c21a1f
bc: shrink internal library
...
function old new delta
bc_lib 1674 1618 -56
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-14 01:01:01 +01:00
Denys Vlasenko
57b6918b0a
bc: group ENABLE_BC code a bit better, no logic changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-14 00:12:13 +01:00
Denys Vlasenko
5f263f406c
bc: fix "dc only" bug
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-13 22:49:59 +01:00
Denys Vlasenko
e755e30402
bc: unbreak "only bc" and "only dc" configs
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-13 22:25:28 +01:00
Denys Vlasenko
89198a9e5d
bc: simplify bc_lex_whitespace()
...
function old new delta
bc_lex_whitespace 52 41 -11
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-13 21:31:29 +01:00
Denys Vlasenko
bbcecc4118
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>
2018-12-13 21:17:43 +01:00
Denys Vlasenko
0fe270e775
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>
2018-12-13 19:58:58 +01:00
Denys Vlasenko
915c72b273
bc: do not append duplicate NUL, reduce indentation in bc_read_line()
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-13 19:29:02 +01:00
Denys Vlasenko
82ea67fbfa
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>
2018-12-13 19:24:42 +01:00
Denys Vlasenko
b7e61e3e4a
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>
2018-12-13 18:16:39 +01:00
Denys Vlasenko
818b602c88
bc: fix another thinko
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-13 17:56:35 +01:00
Denys Vlasenko
335b4efd2f
bc: fix a thinko: dc uses [] string delimiters, bot bc!
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-13 17:46:26 +01:00
Denys Vlasenko
766f67250f
bc: fix comment handling
...
function old new delta
bc_vm_run 514 513 -1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-13 17:43:23 +01:00
Denys Vlasenko
7dc0a51286
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>
2018-12-13 17:36:41 +01:00
Denys Vlasenko
40534bb6e2
bc: shrink zbc_vm_stdin()
...
function old new delta
bc_vm_run 592 534 -58
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-13 17:27:00 +01:00
Denys Vlasenko
89e785af98
bc: trim config help text, add a few comments, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-13 16:35:52 +01:00
Denys Vlasenko
9811ad02bd
bc: unbreak CONFIG_FEATURE_BC_SIGNALS=y config
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-12 23:25:13 +01:00
Denys Vlasenko
c2265f526e
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>
2018-12-12 23:14:44 +01:00
Denys Vlasenko
c0ef23ca40
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>
2018-12-12 23:03:10 +01:00
Denys Vlasenko
19f110751d
bc: convert two more functions to "z" logic
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-12 22:48:19 +01:00
Denys Vlasenko
8a89247e0a
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>
2018-12-12 22:43:58 +01:00
Denys Vlasenko
d8078a79be
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>
2018-12-12 21:56:06 +01:00
Denys Vlasenko
d6ad3666dc
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>
2018-12-12 21:39:10 +01:00
Denys Vlasenko
c2da68e896
bc: optimize bc_parse_pushIndex()
...
function old new delta
bc_parse_pushIndex 80 68 -12
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-12 16:44:34 +01:00
Denys Vlasenko
26819db9a3
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>
2018-12-12 16:09:47 +01:00
Denys Vlasenko
ae0faf91d0
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>
2018-12-12 15:19:54 +01:00
Denys Vlasenko
8cd468f604
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>
2018-12-12 14:57:15 +01:00
Denys Vlasenko
9a34e89289
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>
2018-12-12 13:58:55 +01:00
Denys Vlasenko
251fbb57be
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>
2018-12-12 11:51:32 +01:00
Denys Vlasenko
16494f557f
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>
2018-12-12 00:51:53 +01:00
Denys Vlasenko
69171dc466
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>
2018-12-12 00:29:24 +01:00
Denys Vlasenko
12b9eaf787
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>
2018-12-11 23:50:14 +01:00
Denys Vlasenko
f0f069b08f
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>
2018-12-11 23:22:52 +01:00
Denys Vlasenko
4dd3652c2f
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>
2018-12-11 22:45:15 +01:00
Denys Vlasenko
2c6f563216
bc: tweak comment
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-11 21:21:14 +01:00
Denys Vlasenko
c008a73762
bc: convert bc_program_asciify to "z" function
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-11 20:57:53 +01:00
Denys Vlasenko
9f657e0f7d
bc: shrink bc_program_printString
...
function old new delta
zbc_program_print 665 642 -23
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-11 19:52:25 +01:00
Denys Vlasenko
259137d0f0
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>
2018-12-11 19:44:14 +01:00
Denys Vlasenko
728e7c9ecb
bc: convert bc_program_logical to "z" function
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-11 19:37:00 +01:00
Denys Vlasenko
09d8df84ee
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>
2018-12-11 19:33:09 +01:00
Denys Vlasenko
7f4daa4f58
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>
2018-12-11 19:22:04 +01:00
Denys Vlasenko
1aeacefbb3
bc: rename arithmetic calc functions to "z" functions, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-11 19:12:13 +01:00
Denys Vlasenko
c2d15dff42
bc: move declarations around, no code changes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-11 17:56:09 +01:00
Denys Vlasenko
c355c4a7d6
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>
2018-12-11 17:36:21 +01:00
Denys Vlasenko
b402ff844c
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>
2018-12-11 15:45:15 +01:00
Denys Vlasenko
2930123279
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>
2018-12-11 15:29:32 +01:00
Denys Vlasenko
91cde95916
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>
2018-12-10 20:56:44 +01:00
Denys Vlasenko
628bf1bc63
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>
2018-12-10 20:41:05 +01:00
Denys Vlasenko
88cfea6a81
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>
2018-12-10 20:26:04 +01:00
Denys Vlasenko
fa35e598ab
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>
2018-12-10 20:17:24 +01:00
Denys Vlasenko
86e63cdeca
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>
2018-12-10 19:46:53 +01:00
Denys Vlasenko
dafbc2cdb8
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>
2018-12-10 15:38:52 +01:00
Denys Vlasenko
5ba55f1f35
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>
2018-12-10 15:37:14 +01:00
Denys Vlasenko
c665c183f1
bc: 0xffffffffffffffff may be larger than unsigned long
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-10 15:15:42 +01:00
Denys Vlasenko
8b4cf0dbb0
bc: optimize bc_vec_concat()
...
function old new delta
bc_vec_concat 71 66 -5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-10 15:12:58 +01:00
Denys Vlasenko
a7f1a36540
bc: simplify bc_program_len()
...
function old new delta
bc_program_len 42 34 -8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-10 12:57:01 +01:00
Denys Vlasenko
44d79d866d
bc: simplify bc_program_print()
...
function old new delta
bc_program_print 730 713 -17
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-10 12:33:40 +01:00
Denys Vlasenko
b696d9ec20
bc: simplify bc_num_ulong2num()
...
function old new delta
bc_num_ulong2num 64 59 -5
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-10 12:22:15 +01:00
Denys Vlasenko
9311e01803
bc: move str-to-num conversion functions to their only caller, bc_num_parse()
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-10 11:54:59 +01:00
Denys Vlasenko
218ed1cf54
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>
2018-12-09 13:33:52 +01:00
Denys Vlasenko
4a024c7719
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>
2018-12-09 13:21:54 +01:00
Denys Vlasenko
3129f705fc
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>
2018-12-09 12:04:44 +01:00
Denys Vlasenko
e20e00de34
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>
2018-12-09 11:44:20 +01:00
Denys Vlasenko
5ec4b49125
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>
2018-12-09 02:54:06 +01:00
Denys Vlasenko
927a7d6853
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>
2018-12-09 02:24:14 +01:00
Denys Vlasenko
8fa1e8e6e7
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>
2018-12-09 00:03:57 +01:00
Denys Vlasenko
0f37b3286a
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>
2018-12-08 23:48:53 +01:00
Denys Vlasenko
ebc41c9d94
bc: remove redundant error checks in bc_parse_print()
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-08 23:36:28 +01:00
Denys Vlasenko
5f1b90b91a
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>
2018-12-08 23:18:06 +01:00
Denys Vlasenko
2a8ad48734
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>
2018-12-08 21:56:37 +01:00
Denys Vlasenko
ac6ed11f8d
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>
2018-12-08 21:39:10 +01:00
Denys Vlasenko
6e7c65fca0
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>
2018-12-08 19:34:35 +01:00
Denys Vlasenko
d0bc5fdfea
dc: fix "small dc" to have standard command line API
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-12-08 18:59:07 +01:00
Denys Vlasenko
f522dd9420
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>
2018-12-07 16:35:43 +01:00
Denys Vlasenko
2d615fee38
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>
2018-12-07 16:22:45 +01:00
Denys Vlasenko
64074a1767
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>
2018-12-07 15:50:14 +01:00
Denys Vlasenko
ffdcebdffe
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>
2018-12-07 15:10:05 +01:00
Denys Vlasenko
18c6b54f82
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>
2018-12-07 12:57:32 +01:00