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>
This commit is contained in:
parent
19f110751d
commit
c0ef23ca40
@ -617,12 +617,8 @@ struct BcParse;
|
|||||||
|
|
||||||
struct BcProgram;
|
struct BcProgram;
|
||||||
|
|
||||||
typedef BC_STATUS (*BcParseParse)(struct BcParse *) FAST_FUNC;
|
|
||||||
|
|
||||||
typedef struct BcParse {
|
typedef struct BcParse {
|
||||||
|
|
||||||
BcParseParse parse;
|
|
||||||
|
|
||||||
BcLex l;
|
BcLex l;
|
||||||
|
|
||||||
BcVec flags;
|
BcVec flags;
|
||||||
@ -3483,6 +3479,17 @@ static void bc_parse_number(BcParse *p, BcInst *prev, size_t *nexs)
|
|||||||
(*prev) = BC_INST_NUM;
|
(*prev) = BC_INST_NUM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BC_STATUS zbc_parse_parse(BcParse *p);
|
||||||
|
static BC_STATUS zdc_parse_parse(BcParse *p);
|
||||||
|
|
||||||
|
static BC_STATUS zcommon_parse(BcParse *p)
|
||||||
|
{
|
||||||
|
if (IS_BC) {
|
||||||
|
IF_BC(RETURN_STATUS(zbc_parse_parse(p));)
|
||||||
|
}
|
||||||
|
IF_DC(RETURN_STATUS(zdc_parse_parse(p));)
|
||||||
|
}
|
||||||
|
|
||||||
static BC_STATUS zbc_parse_text(BcParse *p, const char *text)
|
static BC_STATUS zbc_parse_text(BcParse *p, const char *text)
|
||||||
{
|
{
|
||||||
BcStatus s;
|
BcStatus s;
|
||||||
@ -3492,7 +3499,7 @@ static BC_STATUS zbc_parse_text(BcParse *p, const char *text)
|
|||||||
if (!text[0] && !BC_PARSE_CAN_EXEC(p)) {
|
if (!text[0] && !BC_PARSE_CAN_EXEC(p)) {
|
||||||
p->l.t.t = BC_LEX_INVALID;
|
p->l.t.t = BC_LEX_INVALID;
|
||||||
s = BC_STATUS_SUCCESS;
|
s = BC_STATUS_SUCCESS;
|
||||||
ERROR_RETURN(s =) p->parse(p);
|
ERROR_RETURN(s =) zcommon_parse(p);
|
||||||
if (s) RETURN_STATUS(s);
|
if (s) RETURN_STATUS(s);
|
||||||
if (!BC_PARSE_CAN_EXEC(p))
|
if (!BC_PARSE_CAN_EXEC(p))
|
||||||
RETURN_STATUS(bc_error("file is not executable"));
|
RETURN_STATUS(bc_error("file is not executable"));
|
||||||
@ -3556,8 +3563,7 @@ static void bc_parse_free(BcParse *p)
|
|||||||
bc_lex_free(&p->l);
|
bc_lex_free(&p->l);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bc_parse_create(BcParse *p, size_t func,
|
static void bc_parse_create(BcParse *p, size_t func, BcLexNext next)
|
||||||
BcParseParse parse, BcLexNext next)
|
|
||||||
{
|
{
|
||||||
memset(p, 0, sizeof(BcParse));
|
memset(p, 0, sizeof(BcParse));
|
||||||
|
|
||||||
@ -3568,7 +3574,6 @@ static void bc_parse_create(BcParse *p, size_t func,
|
|||||||
bc_vec_pushZeroByte(&p->flags);
|
bc_vec_pushZeroByte(&p->flags);
|
||||||
bc_vec_init(&p->ops, sizeof(BcLexType), NULL);
|
bc_vec_init(&p->ops, sizeof(BcLexType), NULL);
|
||||||
|
|
||||||
p->parse = parse;
|
|
||||||
// p->auto_part = p->nbraces = 0; - already is
|
// p->auto_part = p->nbraces = 0; - already is
|
||||||
bc_parse_updateFunc(p, func);
|
bc_parse_updateFunc(p, func);
|
||||||
}
|
}
|
||||||
@ -4630,7 +4635,7 @@ static BC_STATUS zbc_parse_stmt(BcParse *p)
|
|||||||
# define zbc_parse_stmt(...) (zbc_parse_stmt(__VA_ARGS__), BC_STATUS_SUCCESS)
|
# define zbc_parse_stmt(...) (zbc_parse_stmt(__VA_ARGS__), BC_STATUS_SUCCESS)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static FAST_FUNC BC_STATUS zbc_parse_parse(BcParse *p)
|
static BC_STATUS zbc_parse_parse(BcParse *p)
|
||||||
{
|
{
|
||||||
BcStatus s;
|
BcStatus s;
|
||||||
|
|
||||||
@ -4930,7 +4935,7 @@ static BC_STATUS zbc_parse_expr(BcParse *p, uint8_t flags, BcParseNext next)
|
|||||||
|
|
||||||
static void bc_parse_init(BcParse *p, size_t func)
|
static void bc_parse_init(BcParse *p, size_t func)
|
||||||
{
|
{
|
||||||
bc_parse_create(p, func, zbc_parse_parse, zbc_lex_token);
|
bc_parse_create(p, func, zbc_lex_token);
|
||||||
}
|
}
|
||||||
|
|
||||||
static BC_STATUS zbc_parse_expression(BcParse *p, uint8_t flags)
|
static BC_STATUS zbc_parse_expression(BcParse *p, uint8_t flags)
|
||||||
@ -5134,7 +5139,7 @@ static BC_STATUS zdc_parse_expr(BcParse *p, uint8_t flags)
|
|||||||
# define zdc_parse_expr(...) (zdc_parse_expr(__VA_ARGS__), BC_STATUS_SUCCESS)
|
# define zdc_parse_expr(...) (zdc_parse_expr(__VA_ARGS__), BC_STATUS_SUCCESS)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static FAST_FUNC BC_STATUS zdc_parse_parse(BcParse *p)
|
static BC_STATUS zdc_parse_parse(BcParse *p)
|
||||||
{
|
{
|
||||||
BcStatus s;
|
BcStatus s;
|
||||||
|
|
||||||
@ -5156,7 +5161,7 @@ static FAST_FUNC BC_STATUS zdc_parse_parse(BcParse *p)
|
|||||||
|
|
||||||
static void dc_parse_init(BcParse *p, size_t func)
|
static void dc_parse_init(BcParse *p, size_t func)
|
||||||
{
|
{
|
||||||
bc_parse_create(p, func, zdc_parse_parse, zdc_lex_token);
|
bc_parse_create(p, func, zdc_lex_token);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // ENABLE_DC
|
#endif // ENABLE_DC
|
||||||
@ -7011,7 +7016,7 @@ static BC_STATUS zbc_vm_process(const char *text)
|
|||||||
if (s) RETURN_STATUS(s);
|
if (s) RETURN_STATUS(s);
|
||||||
|
|
||||||
while (G.prs.l.t.t != BC_LEX_EOF) {
|
while (G.prs.l.t.t != BC_LEX_EOF) {
|
||||||
ERROR_RETURN(s =) G.prs.parse(&G.prs);
|
ERROR_RETURN(s =) zcommon_parse(&G.prs);
|
||||||
if (s) RETURN_STATUS(s);
|
if (s) RETURN_STATUS(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7347,7 +7352,7 @@ static BC_STATUS zbc_vm_exec(void)
|
|||||||
if (DEBUG_LIB && s) RETURN_STATUS(s);
|
if (DEBUG_LIB && s) RETURN_STATUS(s);
|
||||||
|
|
||||||
while (G.prs.l.t.t != BC_LEX_EOF) {
|
while (G.prs.l.t.t != BC_LEX_EOF) {
|
||||||
ERROR_RETURN(s =) G.prs.parse(&G.prs);
|
ERROR_RETURN(s =) zcommon_parse(&G.prs);
|
||||||
if (DEBUG_LIB && s) RETURN_STATUS(s);
|
if (DEBUG_LIB && s) RETURN_STATUS(s);
|
||||||
}
|
}
|
||||||
s = zbc_program_exec();
|
s = zbc_program_exec();
|
||||||
|
Loading…
Reference in New Issue
Block a user