Skip to content

Commit

Permalink
* class.c (rb_class_has_methods): added to reduce depenedency
Browse files Browse the repository at this point in the history
  to internal class data structure.
* internal.h: ditto.
* hash.c (has_extra_methods): use added function.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50700 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
ko1 committed May 31, 2015
1 parent 3d410dd commit 2581314
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 2 deletions.
9 changes: 9 additions & 0 deletions ChangeLog
@@ -1,3 +1,12 @@
Mon Jun 1 04:15:42 2015 Koichi Sasada <ko1@atdot.net>

* class.c (rb_class_has_methods): added to reduce depenedency
to internal class data structure.

* internal.h: ditto.

* hash.c (has_extra_methods): use added function.

Mon Jun 1 04:11:48 2015 Koichi Sasada <ko1@atdot.net>

* gc.c , gc.h (rb_obj_info): export obj_info(VALUE) for debugging.
Expand Down
7 changes: 7 additions & 0 deletions class.c
Expand Up @@ -1985,6 +1985,13 @@ rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, V
#undef extract_kwarg
}

int
rb_class_has_methods(VALUE c)
{
st_table *mtbl = RCLASS_M_TBL(c);
return mtbl && mtbl->num_entries ? TRUE : FALSE;
}

/*!
* \}
*/
3 changes: 1 addition & 2 deletions hash.c
Expand Up @@ -37,8 +37,7 @@ has_extra_methods(VALUE klass)
const VALUE base = rb_cHash;
VALUE c = klass;
while (c != base) {
st_table *mtbl = RCLASS_M_TBL(c);
if (mtbl && mtbl->num_entries) return klass;
if (rb_class_has_methods(c)) return klass;
c = RCLASS_SUPER(c);
}
return 0;
Expand Down
2 changes: 2 additions & 0 deletions internal.h
Expand Up @@ -667,6 +667,8 @@ VALUE rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach);
VALUE rb_singleton_class_get(VALUE obj);
void Init_class_hierarchy(void);

int rb_class_has_methods(VALUE c);

/* compar.c */
VALUE rb_invcmp(VALUE, VALUE);

Expand Down

0 comments on commit 2581314

Please sign in to comment.