aboutsummaryrefslogtreecommitdiffstats
path: root/st.c
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-01-15 15:46:41 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-01-15 15:46:41 +0000
commit9ed8c1f15e3f755a6421a37ba114562071a98404 (patch)
tree907abe057681afbaa3f36fe6053ada8ec708b8be /st.c
parent638f696b6ea07878f6f9dada116cb93aed596176 (diff)
downloadruby-9ed8c1f15e3f755a6421a37ba114562071a98404.tar.gz
st refactor add_packed_direct a bit
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34313 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'st.c')
-rw-r--r--st.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/st.c b/st.c
index 9e16197dc8..aa0da569ab 100644
--- a/st.c
+++ b/st.c
@@ -469,10 +469,9 @@ unpack_entries(register st_table *table)
*table = tmp_table;
}
-static int
+static void
add_packed_direct(st_table *table, st_data_t key, st_data_t value)
{
- int res = 1;
if (table->num_entries < MAX_PACKED_NUMHASH) {
st_index_t i = table->num_entries++;
PKEY_SET(table, i, key);
@@ -480,9 +479,8 @@ add_packed_direct(st_table *table, st_data_t key, st_data_t value)
}
else {
unpack_entries(table);
- res = 0;
+ add_direct(table, key, value, key, key % table->num_bins);
}
- return res;
}
@@ -498,9 +496,8 @@ st_insert(register st_table *table, register st_data_t key, st_data_t value)
PVAL_SET(table, i, value);
return 1;
}
- if (add_packed_direct(table, key, value)) {
- return 0;
- }
+ add_packed_direct(table, key, value);
+ return 0;
}
hash_val = do_hash(key, table);
@@ -530,9 +527,8 @@ st_insert2(register st_table *table, register st_data_t key, st_data_t value,
PVAL_SET(table, i, value);
return 1;
}
- if (add_packed_direct(table, key, value)) {
- return 0;
- }
+ add_packed_direct(table, key, value);
+ return 0;
}
hash_val = do_hash(key, table);
@@ -556,9 +552,8 @@ st_add_direct(st_table *table, st_data_t key, st_data_t value)
st_index_t hash_val, bin_pos;
if (table->entries_packed) {
- if (add_packed_direct(table, key, value)) {
- return;
- }
+ add_packed_direct(table, key, value);
+ return;
}
hash_val = do_hash(key, table);