1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

st.c: constify st_table* in private functions

Minor size reduction on 32-bit x86:

   text	   data	    bss	    dec	    hex	filename
  13742	     24	      0	  13766	   35c6	st.o
  14166	     24	      0	  14190	   376e	st-orig.o

Public API change to be proposed separately.

* st.c (find_entry): constify st_table*
  (find_packed_index_from): ditto
  (find_packed_index): ditto
  (get_keys): ditto
  (get_values): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51438 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
normal 2015-07-29 23:55:23 +00:00
parent 669a2a359e
commit d0240cbb6d
2 changed files with 17 additions and 5 deletions

View file

@ -1,3 +1,11 @@
Thu Jul 30 08:48:42 2015 Eric Wong <e@80x24.org>
* st.c (find_entry): constify st_table*
(find_packed_index_from): ditto
(find_packed_index): ditto
(get_keys): ditto
(get_values): ditto
Thu Jul 30 04:29:25 2015 Eric Wong <e@80x24.org>
* benchmark/bm_hash_aref_dsym.rb: new benchmark

14
st.c
View file

@ -347,7 +347,8 @@ count_collision(const struct st_hash_type *type)
((ptr) = find_entry((table), key, (hash_val), ((bin_pos) = hash_pos(hash_val, (table)->num_bins))))
static st_table_entry *
find_entry(st_table *table, st_data_t key, st_index_t hash_val, st_index_t bin_pos)
find_entry(const st_table *table, st_data_t key, st_index_t hash_val,
st_index_t bin_pos)
{
register st_table_entry *ptr = table->bins[bin_pos];
FOUND_ENTRY;
@ -362,7 +363,8 @@ find_entry(st_table *table, st_data_t key, st_index_t hash_val, st_index_t bin_p
}
static inline st_index_t
find_packed_index_from(st_table *table, st_index_t hash_val, st_data_t key, st_index_t i)
find_packed_index_from(const st_table *table, st_index_t hash_val,
st_data_t key, st_index_t i)
{
while (i < table->real_entries &&
(PHASH(table, i) != hash_val || !EQUAL(table, key, &PACKED_ENT(table, i)))) {
@ -372,7 +374,7 @@ find_packed_index_from(st_table *table, st_index_t hash_val, st_data_t key, st_i
}
static inline st_index_t
find_packed_index(st_table *table, st_index_t hash_val, st_data_t key)
find_packed_index(const st_table *table, st_index_t hash_val, st_data_t key)
{
return find_packed_index_from(table, hash_val, key, 0);
}
@ -1038,7 +1040,8 @@ st_foreach(st_table *table, int (*func)(ANYARGS), st_data_t arg)
}
static st_index_t
get_keys(st_table *table, st_data_t *keys, st_index_t size, int check, st_data_t never)
get_keys(const st_table *table, st_data_t *keys, st_index_t size,
int check, st_data_t never)
{
st_data_t key;
st_data_t *keys_start = keys;
@ -1081,7 +1084,8 @@ st_keys_check(st_table *table, st_data_t *keys, st_index_t size, st_data_t never
}
static st_index_t
get_values(st_table *table, st_data_t *values, st_index_t size, int check, st_data_t never)
get_values(const st_table *table, st_data_t *values, st_index_t size,
int check, st_data_t never)
{
st_data_t key;
st_data_t *values_start = values;