From df4b4f31effb663978064274e4077cfbcacfab2a Mon Sep 17 00:00:00 2001 From: Damien Date: Sat, 19 Oct 2013 18:28:01 +0100 Subject: [PATCH] Make grammar rules const so the go in .text section. --- py/parse.c | 14 +++++++------- py/runtime.c | 2 +- py/runtime.h | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/py/parse.c b/py/parse.c index b0aeb1ab5..eaf362c0c 100644 --- a/py/parse.c +++ b/py/parse.c @@ -55,9 +55,9 @@ enum { #define opt_tok(t) (RULE_ARG_OPT_TOK | PY_TOKEN_##t) #define opt_rule(r) (RULE_ARG_OPT_RULE | RULE_##r) #ifdef USE_RULE_NAME -#define DEF_RULE(rule, comp, kind, arg...) static rule_t rule_##rule = { RULE_##rule, kind, #rule, { arg } }; +#define DEF_RULE(rule, comp, kind, arg...) static const rule_t rule_##rule = { RULE_##rule, kind, #rule, { arg } }; #else -#define DEF_RULE(rule, comp, kind, arg...) static rule_t rule_##rule = { RULE_##rule, kind, { arg } }; +#define DEF_RULE(rule, comp, kind, arg...) static const rule_t rule_##rule = { RULE_##rule, kind, { arg } }; #endif #include "grammar.h" #undef or @@ -71,7 +71,7 @@ enum { #undef one_or_more #undef DEF_RULE -static rule_t *rules[] = { +static const rule_t *rules[] = { NULL, #define DEF_RULE(rule, comp, kind, arg...) &rule_##rule, #include "grammar.h" @@ -92,7 +92,7 @@ typedef struct _parser_t { py_parse_node_t *result_stack; } parser_t; -static void push_rule(parser_t *parser, rule_t *rule, int arg_i) { +static void push_rule(parser_t *parser, const rule_t *rule, int arg_i) { if (parser->rule_stack_top >= parser->rule_stack_alloc) { parser->rule_stack_alloc *= 2; parser->rule_stack = m_renew(rule_stack_t, parser->rule_stack, parser->rule_stack_alloc); @@ -109,7 +109,7 @@ static void push_rule_from_arg(parser_t *parser, uint arg) { push_rule(parser, rules[rule_id], 0); } -static void pop_rule(parser_t *parser, rule_t **rule, uint *arg_i) { +static void pop_rule(parser_t *parser, const rule_t **rule, uint *arg_i) { parser->rule_stack_top -= 1; *rule = rules[parser->rule_stack[parser->rule_stack_top].rule_id]; *arg_i = parser->rule_stack[parser->rule_stack_top].arg_i; @@ -243,7 +243,7 @@ static void push_result_token(parser_t *parser, const py_lexer_t *lex) { push_result_node(parser, pn); } -static void push_result_rule(parser_t *parser, rule_t *rule, int num_args) { +static void push_result_rule(parser_t *parser, const rule_t *rule, int num_args) { py_parse_node_struct_t *pn = parse_node_new_struct(rule->rule_id, num_args); for (int i = num_args; i > 0; i--) { pn->nodes[i - 1] = pop_result(parser); @@ -270,7 +270,7 @@ py_parse_node_t py_parse(py_lexer_t *lex, py_parse_input_kind_t input_kind) { uint n, i; bool backtrack = false; - rule_t *rule; + const rule_t *rule; py_token_kind_t tok_kind; bool emit_rule; bool had_trailing_sep; diff --git a/py/runtime.c b/py/runtime.c index 01fd92fcf..42e03ed43 100644 --- a/py/runtime.c +++ b/py/runtime.c @@ -1546,7 +1546,7 @@ py_obj_t rt_iternext(py_obj_t o_in) { } } -const void *const rt_fun_table[RT_F_NUMBER_OF] = { +void *const rt_fun_table[RT_F_NUMBER_OF] = { rt_load_const_str, rt_load_name, rt_load_global, diff --git a/py/runtime.h b/py/runtime.h index 86d59f24e..dc7ecc617 100644 --- a/py/runtime.h +++ b/py/runtime.h @@ -76,7 +76,7 @@ typedef enum { RT_F_NUMBER_OF, } rt_fun_kind_t; -extern const void *const rt_fun_table[RT_F_NUMBER_OF]; +extern void *const rt_fun_table[RT_F_NUMBER_OF]; typedef machine_ptr_t py_obj_t; // must be of pointer size typedef py_obj_t (*py_fun_0_t)();