diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-06 13:10:56 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-06 13:10:56 +0100 |
commit | b23ac51d0cfc04226fa8fcc90edd00808614cb32 (patch) | |
tree | fb5007d520376c5bb6a9e940a1e5919319a0324f | |
parent | d00d2f9603d027c30ce21ed42a951bb650a264e9 (diff) | |
download | busybox-w32-b23ac51d0cfc04226fa8fcc90edd00808614cb32.tar.gz busybox-w32-b23ac51d0cfc04226fa8fcc90edd00808614cb32.tar.bz2 busybox-w32-b23ac51d0cfc04226fa8fcc90edd00808614cb32.zip |
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>
-rw-r--r-- | miscutils/bc.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index f936ad6f3..3d53db778 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c | |||
@@ -1069,8 +1069,12 @@ static void bc_vec_expand(BcVec *v, size_t req) | |||
1069 | } | 1069 | } |
1070 | } | 1070 | } |
1071 | 1071 | ||
1072 | #define bc_vec_pop(v) (bc_vec_npop((v), 1)) | 1072 | static void bc_vec_pop(BcVec *v) |
1073 | #define bc_vec_top(v) (bc_vec_item_rev((v), 0)) | 1073 | { |
1074 | v->len--; | ||
1075 | if (v->dtor) | ||
1076 | v->dtor(v->v + (v->size * v->len)); | ||
1077 | } | ||
1074 | 1078 | ||
1075 | static void bc_vec_npop(BcVec *v, size_t n) | 1079 | static void bc_vec_npop(BcVec *v, size_t n) |
1076 | { | 1080 | { |
@@ -1094,8 +1098,6 @@ static void bc_vec_push(BcVec *v, const void *data) | |||
1094 | v->len += 1; | 1098 | v->len += 1; |
1095 | } | 1099 | } |
1096 | 1100 | ||
1097 | #define bc_parse_push(p, i) bc_vec_pushByte(&(p)->func->code, (char) (i)) | ||
1098 | |||
1099 | static void bc_vec_pushByte(BcVec *v, char data) | 1101 | static void bc_vec_pushByte(BcVec *v, char data) |
1100 | { | 1102 | { |
1101 | bc_vec_push(v, &data); | 1103 | bc_vec_push(v, &data); |
@@ -1159,6 +1161,11 @@ static void *bc_vec_item_rev(const BcVec *v, size_t idx) | |||
1159 | return v->v + v->size * (v->len - idx - 1); | 1161 | return v->v + v->size * (v->len - idx - 1); |
1160 | } | 1162 | } |
1161 | 1163 | ||
1164 | static void *bc_vec_top(const BcVec *v) | ||
1165 | { | ||
1166 | return v->v + v->size * (v->len - 1); | ||
1167 | } | ||
1168 | |||
1162 | static void bc_vec_free(void *vec) | 1169 | static void bc_vec_free(void *vec) |
1163 | { | 1170 | { |
1164 | BcVec *v = (BcVec *) vec; | 1171 | BcVec *v = (BcVec *) vec; |
@@ -3530,6 +3537,8 @@ static void bc_parse_addFunc(BcParse *p, char *name, size_t *idx) | |||
3530 | p->func = bc_vec_item(&G.prog.fns, p->fidx); | 3537 | p->func = bc_vec_item(&G.prog.fns, p->fidx); |
3531 | } | 3538 | } |
3532 | 3539 | ||
3540 | #define bc_parse_push(p, i) bc_vec_pushByte(&(p)->func->code, (char) (i)) | ||
3541 | |||
3533 | static void bc_parse_pushName(BcParse *p, char *name) | 3542 | static void bc_parse_pushName(BcParse *p, char *name) |
3534 | { | 3543 | { |
3535 | size_t i = 0, len = strlen(name); | 3544 | size_t i = 0, len = strlen(name); |