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:
parent
1d2d307c5c
commit
b96499f094
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user