objspace.c: use rb_ident_hash_new

* ext/objspace/objspace.c (reachable_objects_from_root): use
  rb_ident_hash_new instead of funcall Hash#compare_by_id.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2015-08-10 01:08:02 +00:00
parent 1d2d307c5c
commit b96499f094
2 changed files with 3 additions and 5 deletions

View File

@ -744,8 +744,7 @@ reachable_object_from_root_i(const char *category, VALUE obj, void *ptr)
else {
data->last_category = category;
category_str = data->last_category_str = rb_str_new2(category);
category_objects = data->last_category_objects = rb_hash_new();
rb_funcall(category_objects, rb_intern("compare_by_identity"), 0);
category_objects = data->last_category_objects = rb_ident_hash_new();
if (!NIL_P(rb_hash_lookup(data->categories, category_str))) {
rb_bug("reachable_object_from_root_i: category should insert at once");
}
@ -781,10 +780,9 @@ static VALUE
reachable_objects_from_root(VALUE self)
{
struct rofr_data data;
VALUE hash = data.categories = rb_hash_new();
VALUE hash = data.categories = rb_ident_hash_new();
data.last_category = 0;
rb_funcall(hash, rb_intern("compare_by_identity"), 0);
rb_objspace_reachable_objects_from_root(reachable_object_from_root_i, &data);
rb_hash_foreach(hash, collect_values_of_values, hash);

View File

@ -843,7 +843,6 @@ struct st_table *rb_hash_tbl_raw(VALUE hash);
VALUE rb_hash_has_key(VALUE hash, VALUE key);
VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc);
long rb_objid_hash(st_index_t index);
VALUE rb_ident_hash_new(void);
st_table *rb_init_identtable(void);
st_table *rb_init_identtable_with_size(st_index_t size);
@ -1268,6 +1267,7 @@ VALUE rb_str_normalize_ospath(const char *ptr, long len);
/* hash.c (export) */
VALUE rb_hash_delete_entry(VALUE hash, VALUE key);
VALUE rb_ident_hash_new(void);
/* io.c (export) */
void rb_maygvl_fd_fix_cloexec(int fd);