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>
This commit is contained in:
Denys Vlasenko 2018-12-18 15:49:42 +01:00
parent 55f3cab7e9
commit 3f940c9c70

View File

@ -5256,11 +5256,18 @@ exec_err:
static size_t bc_program_index(char *code, size_t *bgn) static size_t bc_program_index(char *code, size_t *bgn)
{ {
char amt = code[(*bgn)++], i = 0; unsigned char *bytes = (void*)(code + *bgn);
size_t res = 0; unsigned amt;
unsigned i;
size_t res;
for (; i < amt; ++i, ++(*bgn)) amt = *bytes++;
res |= (((size_t)((int) code[*bgn]) & UCHAR_MAX) << (i * CHAR_BIT)); *bgn += amt + 1;
amt *= 8;
res = 0;
for (i = 0; i < amt; i += 8)
res |= (size_t)(*bytes++) << i;
return res; return res;
} }