mirror of
https://github.com/rkd77/elinks.git
synced 2024-10-09 05:20:36 -04: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];
|
||||
|
||||
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 action *act;
|
||||
const struct action *act;
|
||||
enum keymap_id keymap_id;
|
||||
|
||||
/* 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);
|
||||
#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;
|
||||
|
||||
item->expanded = 1;
|
||||
@ -644,7 +646,7 @@ get_keybinding_text(struct listbox_item *item, struct terminal *term)
|
||||
return stracpy(keybinding_text_toggle ? keymap->str
|
||||
: _(keymap->desc, term));
|
||||
} else if (item->depth < 2) {
|
||||
struct action *action = item->udata;
|
||||
const struct action *action = item->udata;
|
||||
|
||||
return stracpy(keybinding_text_toggle ? action->str
|
||||
: _(action->desc, term));
|
||||
@ -686,7 +688,7 @@ get_keybinding_root(struct listbox_item *item)
|
||||
if (item->depth == 0) return NULL;
|
||||
|
||||
if (item->depth == 1) {
|
||||
struct action *action = item->udata;
|
||||
const struct action *action = item->udata;
|
||||
|
||||
return keymap_box_item[action->keymap_id];
|
||||
} else {
|
||||
@ -700,7 +702,7 @@ static enum listbox_match
|
||||
match_keybinding(struct listbox_item *item, struct terminal *term,
|
||||
unsigned char *text)
|
||||
{
|
||||
struct action *action = item->udata;
|
||||
const struct action *action = item->udata;
|
||||
unsigned char *desc;
|
||||
|
||||
if (item->depth != 1)
|
||||
@ -872,7 +874,7 @@ push_kbdbind_add_button(struct dialog_data *dlg_data,
|
||||
hop->action_id = keybinding->action_id;
|
||||
hop->keymap_id = keybinding->keymap_id;
|
||||
} else {
|
||||
struct action *action = item->udata;
|
||||
const struct action *action = item->udata;
|
||||
|
||||
hop->action_id = action->num;
|
||||
hop->keymap_id = action->keymap_id;
|
||||
|
@ -16,7 +16,8 @@ void options_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);
|
||||
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);
|
||||
|
||||
#endif
|
||||
|
@ -26,7 +26,7 @@
|
||||
/* Fix namespace clash on MacOS. */
|
||||
#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 LIST_OF(struct keybinding) keymaps[KEYMAP_MAX];
|
||||
|
||||
@ -229,7 +229,7 @@ static struct keymap keymap_table[] = {
|
||||
* Config file helpers.
|
||||
*/
|
||||
|
||||
static struct action *
|
||||
static const struct action *
|
||||
get_action_from_keystroke(enum keymap_id keymap_id,
|
||||
const unsigned char *keystroke_str)
|
||||
{
|
||||
@ -243,8 +243,8 @@ unsigned char *
|
||||
get_action_name_from_keystroke(enum keymap_id keymap_id,
|
||||
const unsigned char *keystroke_str)
|
||||
{
|
||||
struct action *action = get_action_from_keystroke(keymap_id,
|
||||
keystroke_str);
|
||||
const struct action *action = get_action_from_keystroke(keymap_id,
|
||||
keystroke_str);
|
||||
|
||||
return action ? action->str : NULL;
|
||||
}
|
||||
@ -252,7 +252,7 @@ get_action_name_from_keystroke(enum keymap_id keymap_id,
|
||||
action_id_T
|
||||
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);
|
||||
|
||||
@ -263,7 +263,7 @@ get_action_from_string(enum keymap_id keymap_id, unsigned char *str)
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct action *
|
||||
const struct action *
|
||||
get_action(enum keymap_id keymap_id, action_id_T action_id)
|
||||
{
|
||||
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 *
|
||||
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;
|
||||
}
|
||||
@ -285,7 +285,7 @@ get_action_name(enum keymap_id keymap_id, action_id_T action_id)
|
||||
static unsigned char *
|
||||
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)
|
||||
: NULL;
|
||||
@ -523,23 +523,23 @@ add_actions_to_string(struct string *string, action_id_T action_ids[],
|
||||
|
||||
#undef KEYMAP_ID
|
||||
#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"
|
||||
};
|
||||
|
||||
#undef KEYMAP_ID
|
||||
#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"
|
||||
};
|
||||
|
||||
#undef KEYMAP_ID
|
||||
#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"
|
||||
};
|
||||
|
||||
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) },
|
||||
{ edit_action_table, sizeof_array(edit_action_table) },
|
||||
{ menu_action_table, sizeof_array(menu_action_table) },
|
||||
@ -844,11 +844,11 @@ add_default_keybindings(void)
|
||||
*/
|
||||
|
||||
struct action_alias {
|
||||
unsigned char *str;
|
||||
const unsigned char *str;
|
||||
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 },
|
||||
{ "down", ACT_MAIN_MOVE_LINK_NEXT },
|
||||
{ "download", ACT_MAIN_LINK_DOWNLOAD },
|
||||
@ -869,13 +869,13 @@ static struct action_alias main_action_aliases[] = {
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
static struct action_alias edit_action_aliases[] = {
|
||||
static const struct action_alias edit_action_aliases[] = {
|
||||
{ "edit", ACT_EDIT_OPEN_EXTERNAL },
|
||||
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
static struct action_alias *action_aliases[KEYMAP_MAX] = {
|
||||
static const struct action_alias *action_aliases[KEYMAP_MAX] = {
|
||||
main_action_aliases,
|
||||
edit_action_aliases,
|
||||
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);
|
||||
|
||||
if (action_aliases[keymap_id]) {
|
||||
struct action_alias *alias;
|
||||
const struct action_alias *alias;
|
||||
|
||||
for (alias = action_aliases[keymap_id]; alias->str; alias++)
|
||||
if (!strcmp(alias->str, action_str))
|
||||
|
@ -30,7 +30,7 @@ struct action {
|
||||
};
|
||||
|
||||
struct action_list {
|
||||
struct action *actions;
|
||||
const struct action *actions;
|
||||
int num_actions;
|
||||
};
|
||||
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);
|
||||
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);
|
||||
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,
|
||||
@ -113,7 +113,7 @@ unsigned char *get_action_name_from_keystroke(enum keymap_id keymap_id,
|
||||
static inline unsigned int
|
||||
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);
|
||||
}
|
||||
@ -121,7 +121,7 @@ action_is_anonymous_safe(enum keymap_id keymap_id, action_id_T action_id)
|
||||
static inline unsigned int
|
||||
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);
|
||||
}
|
||||
@ -129,7 +129,7 @@ action_requires_view_state(enum keymap_id keymap_id, action_id_T action_id)
|
||||
static inline unsigned int
|
||||
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);
|
||||
}
|
||||
@ -137,7 +137,7 @@ action_requires_location(enum keymap_id keymap_id, action_id_T action_id)
|
||||
static inline unsigned int
|
||||
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);
|
||||
}
|
||||
@ -145,7 +145,7 @@ action_prefix_is_link_number(enum keymap_id keymap_id, action_id_T action_id)
|
||||
static inline unsigned int
|
||||
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);
|
||||
}
|
||||
@ -153,7 +153,7 @@ action_requires_link(enum keymap_id keymap_id, action_id_T action_id)
|
||||
static inline unsigned int
|
||||
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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user