mirror of
https://github.com/rkd77/elinks.git
synced 2024-11-04 08:17:17 -05:00
Make struct action const
With GCC 4.3.1 on i686, this changes the sizes of sections as follows: section before after change .text 682428 682492 +64 .rodata 212668 216352 +3684 .data 58092 54444 -3648 .debug_info 1482388 1482472 +84 .debug_abbrev 153714 153723 +9 .debug_line 272299 272319 +20 .debug_loc 540394 540372 -22 .debug_ranges 113784 113792 +8 Total 3917695 3917894 +199 The surprising .text change comes from src/config/dialogs.o. Some of that is in get_keybinding_text(), where GCC changes the order of basic blocks and apparently misses some optimizations.
This commit is contained in:
parent
89c7e57890
commit
23fd2d58f4
@ -549,10 +549,11 @@ get_keybinding_action_box_item(enum keymap_id keymap_id, action_id_T action_id)
|
|||||||
struct listbox_item *keymap_box_item[KEYMAP_MAX];
|
struct listbox_item *keymap_box_item[KEYMAP_MAX];
|
||||||
|
|
||||||
void
|
void
|
||||||
init_keybinding_listboxes(struct keymap keymap_table[KEYMAP_MAX], struct action_list actions[])
|
init_keybinding_listboxes(struct keymap keymap_table[KEYMAP_MAX],
|
||||||
|
const struct action_list actions[])
|
||||||
{
|
{
|
||||||
struct listbox_item *root = &keybinding_browser.root;
|
struct listbox_item *root = &keybinding_browser.root;
|
||||||
struct action *act;
|
const struct action *act;
|
||||||
enum keymap_id keymap_id;
|
enum keymap_id keymap_id;
|
||||||
|
|
||||||
/* Do it backwards because add_listbox_item() add to front
|
/* Do it backwards because add_listbox_item() add to front
|
||||||
@ -577,7 +578,8 @@ init_keybinding_listboxes(struct keymap keymap_table[KEYMAP_MAX], struct action_
|
|||||||
assert(act->desc);
|
assert(act->desc);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
item = add_listbox_item(NULL, keymap_box, BI_FOLDER, act, -1);
|
item = add_listbox_item(NULL, keymap_box, BI_FOLDER,
|
||||||
|
(void *) act, -1);
|
||||||
if (!item) continue;
|
if (!item) continue;
|
||||||
|
|
||||||
item->expanded = 1;
|
item->expanded = 1;
|
||||||
@ -644,7 +646,7 @@ get_keybinding_text(struct listbox_item *item, struct terminal *term)
|
|||||||
return stracpy(keybinding_text_toggle ? keymap->str
|
return stracpy(keybinding_text_toggle ? keymap->str
|
||||||
: _(keymap->desc, term));
|
: _(keymap->desc, term));
|
||||||
} else if (item->depth < 2) {
|
} else if (item->depth < 2) {
|
||||||
struct action *action = item->udata;
|
const struct action *action = item->udata;
|
||||||
|
|
||||||
return stracpy(keybinding_text_toggle ? action->str
|
return stracpy(keybinding_text_toggle ? action->str
|
||||||
: _(action->desc, term));
|
: _(action->desc, term));
|
||||||
@ -686,7 +688,7 @@ get_keybinding_root(struct listbox_item *item)
|
|||||||
if (item->depth == 0) return NULL;
|
if (item->depth == 0) return NULL;
|
||||||
|
|
||||||
if (item->depth == 1) {
|
if (item->depth == 1) {
|
||||||
struct action *action = item->udata;
|
const struct action *action = item->udata;
|
||||||
|
|
||||||
return keymap_box_item[action->keymap_id];
|
return keymap_box_item[action->keymap_id];
|
||||||
} else {
|
} else {
|
||||||
@ -700,7 +702,7 @@ static enum listbox_match
|
|||||||
match_keybinding(struct listbox_item *item, struct terminal *term,
|
match_keybinding(struct listbox_item *item, struct terminal *term,
|
||||||
unsigned char *text)
|
unsigned char *text)
|
||||||
{
|
{
|
||||||
struct action *action = item->udata;
|
const struct action *action = item->udata;
|
||||||
unsigned char *desc;
|
unsigned char *desc;
|
||||||
|
|
||||||
if (item->depth != 1)
|
if (item->depth != 1)
|
||||||
@ -872,7 +874,7 @@ push_kbdbind_add_button(struct dialog_data *dlg_data,
|
|||||||
hop->action_id = keybinding->action_id;
|
hop->action_id = keybinding->action_id;
|
||||||
hop->keymap_id = keybinding->keymap_id;
|
hop->keymap_id = keybinding->keymap_id;
|
||||||
} else {
|
} else {
|
||||||
struct action *action = item->udata;
|
const struct action *action = item->udata;
|
||||||
|
|
||||||
hop->action_id = action->num;
|
hop->action_id = action->num;
|
||||||
hop->keymap_id = action->keymap_id;
|
hop->keymap_id = action->keymap_id;
|
||||||
|
@ -16,7 +16,8 @@ void options_manager(struct session *);
|
|||||||
void keybinding_manager(struct session *);
|
void keybinding_manager(struct session *);
|
||||||
|
|
||||||
struct listbox_item *get_keybinding_action_box_item(enum keymap_id keymap_id, action_id_T action_id);
|
struct listbox_item *get_keybinding_action_box_item(enum keymap_id keymap_id, action_id_T action_id);
|
||||||
void init_keybinding_listboxes(struct keymap keymap_table[], struct action_list actions[]);
|
void init_keybinding_listboxes(struct keymap keymap_table[],
|
||||||
|
const struct action_list actions[]);
|
||||||
void done_keybinding_listboxes(void);
|
void done_keybinding_listboxes(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
/* Fix namespace clash on MacOS. */
|
/* Fix namespace clash on MacOS. */
|
||||||
#define table table_elinks
|
#define table table_elinks
|
||||||
|
|
||||||
static struct action_list action_table[KEYMAP_MAX];
|
static const struct action_list action_table[KEYMAP_MAX];
|
||||||
static struct keymap keymap_table[KEYMAP_MAX];
|
static struct keymap keymap_table[KEYMAP_MAX];
|
||||||
static LIST_OF(struct keybinding) keymaps[KEYMAP_MAX];
|
static LIST_OF(struct keybinding) keymaps[KEYMAP_MAX];
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ static struct keymap keymap_table[] = {
|
|||||||
* Config file helpers.
|
* Config file helpers.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static struct action *
|
static const struct action *
|
||||||
get_action_from_keystroke(enum keymap_id keymap_id,
|
get_action_from_keystroke(enum keymap_id keymap_id,
|
||||||
const unsigned char *keystroke_str)
|
const unsigned char *keystroke_str)
|
||||||
{
|
{
|
||||||
@ -243,8 +243,8 @@ unsigned char *
|
|||||||
get_action_name_from_keystroke(enum keymap_id keymap_id,
|
get_action_name_from_keystroke(enum keymap_id keymap_id,
|
||||||
const unsigned char *keystroke_str)
|
const unsigned char *keystroke_str)
|
||||||
{
|
{
|
||||||
struct action *action = get_action_from_keystroke(keymap_id,
|
const struct action *action = get_action_from_keystroke(keymap_id,
|
||||||
keystroke_str);
|
keystroke_str);
|
||||||
|
|
||||||
return action ? action->str : NULL;
|
return action ? action->str : NULL;
|
||||||
}
|
}
|
||||||
@ -252,7 +252,7 @@ get_action_name_from_keystroke(enum keymap_id keymap_id,
|
|||||||
action_id_T
|
action_id_T
|
||||||
get_action_from_string(enum keymap_id keymap_id, unsigned char *str)
|
get_action_from_string(enum keymap_id keymap_id, unsigned char *str)
|
||||||
{
|
{
|
||||||
struct action *action;
|
const struct action *action;
|
||||||
|
|
||||||
assert(keymap_id >= 0 && keymap_id < KEYMAP_MAX);
|
assert(keymap_id >= 0 && keymap_id < KEYMAP_MAX);
|
||||||
|
|
||||||
@ -263,7 +263,7 @@ get_action_from_string(enum keymap_id keymap_id, unsigned char *str)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct action *
|
const struct action *
|
||||||
get_action(enum keymap_id keymap_id, action_id_T action_id)
|
get_action(enum keymap_id keymap_id, action_id_T action_id)
|
||||||
{
|
{
|
||||||
assert(keymap_id >= 0 && keymap_id < KEYMAP_MAX);
|
assert(keymap_id >= 0 && keymap_id < KEYMAP_MAX);
|
||||||
@ -277,7 +277,7 @@ get_action(enum keymap_id keymap_id, action_id_T action_id)
|
|||||||
unsigned char *
|
unsigned char *
|
||||||
get_action_name(enum keymap_id keymap_id, action_id_T action_id)
|
get_action_name(enum keymap_id keymap_id, action_id_T action_id)
|
||||||
{
|
{
|
||||||
struct action *action = get_action(keymap_id, action_id);
|
const struct action *action = get_action(keymap_id, action_id);
|
||||||
|
|
||||||
return action ? action->str : NULL;
|
return action ? action->str : NULL;
|
||||||
}
|
}
|
||||||
@ -285,7 +285,7 @@ get_action_name(enum keymap_id keymap_id, action_id_T action_id)
|
|||||||
static unsigned char *
|
static unsigned char *
|
||||||
get_action_desc(enum keymap_id keymap_id, action_id_T action_id)
|
get_action_desc(enum keymap_id keymap_id, action_id_T action_id)
|
||||||
{
|
{
|
||||||
struct action *action = get_action(keymap_id, action_id);
|
const struct action *action = get_action(keymap_id, action_id);
|
||||||
|
|
||||||
return action ? (action->desc ? action->desc : action->str)
|
return action ? (action->desc ? action->desc : action->str)
|
||||||
: NULL;
|
: NULL;
|
||||||
@ -523,23 +523,23 @@ add_actions_to_string(struct string *string, action_id_T action_ids[],
|
|||||||
|
|
||||||
#undef KEYMAP_ID
|
#undef KEYMAP_ID
|
||||||
#define KEYMAP_ID KEYMAP_MAIN
|
#define KEYMAP_ID KEYMAP_MAIN
|
||||||
static struct action main_action_table[MAIN_ACTIONS + 1] = {
|
static const struct action main_action_table[MAIN_ACTIONS + 1] = {
|
||||||
#include "config/actions-main.inc"
|
#include "config/actions-main.inc"
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef KEYMAP_ID
|
#undef KEYMAP_ID
|
||||||
#define KEYMAP_ID KEYMAP_EDIT
|
#define KEYMAP_ID KEYMAP_EDIT
|
||||||
static struct action edit_action_table[EDIT_ACTIONS + 1] = {
|
static const struct action edit_action_table[EDIT_ACTIONS + 1] = {
|
||||||
#include "config/actions-edit.inc"
|
#include "config/actions-edit.inc"
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef KEYMAP_ID
|
#undef KEYMAP_ID
|
||||||
#define KEYMAP_ID KEYMAP_MENU
|
#define KEYMAP_ID KEYMAP_MENU
|
||||||
static struct action menu_action_table[MENU_ACTIONS + 1] = {
|
static const struct action menu_action_table[MENU_ACTIONS + 1] = {
|
||||||
#include "config/actions-menu.inc"
|
#include "config/actions-menu.inc"
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct action_list action_table[KEYMAP_MAX] = {
|
static const struct action_list action_table[KEYMAP_MAX] = {
|
||||||
{ main_action_table, sizeof_array(main_action_table) },
|
{ main_action_table, sizeof_array(main_action_table) },
|
||||||
{ edit_action_table, sizeof_array(edit_action_table) },
|
{ edit_action_table, sizeof_array(edit_action_table) },
|
||||||
{ menu_action_table, sizeof_array(menu_action_table) },
|
{ menu_action_table, sizeof_array(menu_action_table) },
|
||||||
@ -844,11 +844,11 @@ add_default_keybindings(void)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
struct action_alias {
|
struct action_alias {
|
||||||
unsigned char *str;
|
const unsigned char *str;
|
||||||
action_id_T action_id;
|
action_id_T action_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct action_alias main_action_aliases[] = {
|
static const struct action_alias main_action_aliases[] = {
|
||||||
{ "back", ACT_MAIN_HISTORY_MOVE_BACK },
|
{ "back", ACT_MAIN_HISTORY_MOVE_BACK },
|
||||||
{ "down", ACT_MAIN_MOVE_LINK_NEXT },
|
{ "down", ACT_MAIN_MOVE_LINK_NEXT },
|
||||||
{ "download", ACT_MAIN_LINK_DOWNLOAD },
|
{ "download", ACT_MAIN_LINK_DOWNLOAD },
|
||||||
@ -869,13 +869,13 @@ static struct action_alias main_action_aliases[] = {
|
|||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct action_alias edit_action_aliases[] = {
|
static const struct action_alias edit_action_aliases[] = {
|
||||||
{ "edit", ACT_EDIT_OPEN_EXTERNAL },
|
{ "edit", ACT_EDIT_OPEN_EXTERNAL },
|
||||||
|
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct action_alias *action_aliases[KEYMAP_MAX] = {
|
static const struct action_alias *action_aliases[KEYMAP_MAX] = {
|
||||||
main_action_aliases,
|
main_action_aliases,
|
||||||
edit_action_aliases,
|
edit_action_aliases,
|
||||||
NULL,
|
NULL,
|
||||||
@ -887,7 +887,7 @@ get_aliased_action(enum keymap_id keymap_id, unsigned char *action_str)
|
|||||||
assert(keymap_id >= 0 && keymap_id < KEYMAP_MAX);
|
assert(keymap_id >= 0 && keymap_id < KEYMAP_MAX);
|
||||||
|
|
||||||
if (action_aliases[keymap_id]) {
|
if (action_aliases[keymap_id]) {
|
||||||
struct action_alias *alias;
|
const struct action_alias *alias;
|
||||||
|
|
||||||
for (alias = action_aliases[keymap_id]; alias->str; alias++)
|
for (alias = action_aliases[keymap_id]; alias->str; alias++)
|
||||||
if (!strcmp(alias->str, action_str))
|
if (!strcmp(alias->str, action_str))
|
||||||
|
@ -30,7 +30,7 @@ struct action {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct action_list {
|
struct action_list {
|
||||||
struct action *actions;
|
const struct action *actions;
|
||||||
int num_actions;
|
int num_actions;
|
||||||
};
|
};
|
||||||
struct keymap {
|
struct keymap {
|
||||||
@ -104,7 +104,7 @@ struct keybinding *add_keybinding(enum keymap_id keymap_id, action_id_T action_i
|
|||||||
int keybinding_exists(enum keymap_id keymap_id, struct term_event_keyboard *kbd, action_id_T *action_id);
|
int keybinding_exists(enum keymap_id keymap_id, struct term_event_keyboard *kbd, action_id_T *action_id);
|
||||||
void free_keybinding(struct keybinding *);
|
void free_keybinding(struct keybinding *);
|
||||||
|
|
||||||
struct action *get_action(enum keymap_id keymap_id, action_id_T action_id);
|
const struct action *get_action(enum keymap_id keymap_id, action_id_T action_id);
|
||||||
unsigned char *get_action_name(enum keymap_id keymap_id, action_id_T action_id);
|
unsigned char *get_action_name(enum keymap_id keymap_id, action_id_T action_id);
|
||||||
action_id_T get_action_from_string(enum keymap_id keymap_id, unsigned char *str);
|
action_id_T get_action_from_string(enum keymap_id keymap_id, unsigned char *str);
|
||||||
unsigned char *get_action_name_from_keystroke(enum keymap_id keymap_id,
|
unsigned char *get_action_name_from_keystroke(enum keymap_id keymap_id,
|
||||||
@ -113,7 +113,7 @@ unsigned char *get_action_name_from_keystroke(enum keymap_id keymap_id,
|
|||||||
static inline unsigned int
|
static inline unsigned int
|
||||||
action_is_anonymous_safe(enum keymap_id keymap_id, action_id_T action_id)
|
action_is_anonymous_safe(enum keymap_id keymap_id, action_id_T action_id)
|
||||||
{
|
{
|
||||||
struct action *action = get_action(keymap_id, action_id);
|
const struct action *action = get_action(keymap_id, action_id);
|
||||||
|
|
||||||
return action && !(action->flags & ACTION_RESTRICT_ANONYMOUS);
|
return action && !(action->flags & ACTION_RESTRICT_ANONYMOUS);
|
||||||
}
|
}
|
||||||
@ -121,7 +121,7 @@ action_is_anonymous_safe(enum keymap_id keymap_id, action_id_T action_id)
|
|||||||
static inline unsigned int
|
static inline unsigned int
|
||||||
action_requires_view_state(enum keymap_id keymap_id, action_id_T action_id)
|
action_requires_view_state(enum keymap_id keymap_id, action_id_T action_id)
|
||||||
{
|
{
|
||||||
struct action *action = get_action(keymap_id, action_id);
|
const struct action *action = get_action(keymap_id, action_id);
|
||||||
|
|
||||||
return action && (action->flags & ACTION_REQUIRE_VIEW_STATE);
|
return action && (action->flags & ACTION_REQUIRE_VIEW_STATE);
|
||||||
}
|
}
|
||||||
@ -129,7 +129,7 @@ action_requires_view_state(enum keymap_id keymap_id, action_id_T action_id)
|
|||||||
static inline unsigned int
|
static inline unsigned int
|
||||||
action_requires_location(enum keymap_id keymap_id, action_id_T action_id)
|
action_requires_location(enum keymap_id keymap_id, action_id_T action_id)
|
||||||
{
|
{
|
||||||
struct action *action = get_action(keymap_id, action_id);
|
const struct action *action = get_action(keymap_id, action_id);
|
||||||
|
|
||||||
return action && (action->flags & ACTION_REQUIRE_LOCATION);
|
return action && (action->flags & ACTION_REQUIRE_LOCATION);
|
||||||
}
|
}
|
||||||
@ -137,7 +137,7 @@ action_requires_location(enum keymap_id keymap_id, action_id_T action_id)
|
|||||||
static inline unsigned int
|
static inline unsigned int
|
||||||
action_prefix_is_link_number(enum keymap_id keymap_id, action_id_T action_id)
|
action_prefix_is_link_number(enum keymap_id keymap_id, action_id_T action_id)
|
||||||
{
|
{
|
||||||
struct action *action = get_action(keymap_id, action_id);
|
const struct action *action = get_action(keymap_id, action_id);
|
||||||
|
|
||||||
return action && (action->flags & ACTION_JUMP_TO_LINK);
|
return action && (action->flags & ACTION_JUMP_TO_LINK);
|
||||||
}
|
}
|
||||||
@ -145,7 +145,7 @@ action_prefix_is_link_number(enum keymap_id keymap_id, action_id_T action_id)
|
|||||||
static inline unsigned int
|
static inline unsigned int
|
||||||
action_requires_link(enum keymap_id keymap_id, action_id_T action_id)
|
action_requires_link(enum keymap_id keymap_id, action_id_T action_id)
|
||||||
{
|
{
|
||||||
struct action *action = get_action(keymap_id, action_id);
|
const struct action *action = get_action(keymap_id, action_id);
|
||||||
|
|
||||||
return action && (action->flags & ACTION_REQUIRE_LINK);
|
return action && (action->flags & ACTION_REQUIRE_LINK);
|
||||||
}
|
}
|
||||||
@ -153,7 +153,7 @@ action_requires_link(enum keymap_id keymap_id, action_id_T action_id)
|
|||||||
static inline unsigned int
|
static inline unsigned int
|
||||||
action_requires_form(enum keymap_id keymap_id, action_id_T action_id)
|
action_requires_form(enum keymap_id keymap_id, action_id_T action_id)
|
||||||
{
|
{
|
||||||
struct action *action = get_action(keymap_id, action_id);
|
const struct action *action = get_action(keymap_id, action_id);
|
||||||
|
|
||||||
return action && (action->flags & ACTION_REQUIRE_FORM);
|
return action && (action->flags & ACTION_REQUIRE_FORM);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user