Skip to content

Commit

Permalink
* method.h (METHOD_ENTRY_COMPLEMENTED(_SET)): introduced to recognize
Browse files Browse the repository at this point in the history
  complemented method entries or not. There are some cases that callabe
  method entries do not have defined_class.

* vm_method.c (rb_method_entry_complement_defined_class):
  use METHOD_ENTRY_COMPLEMENTED_SET().




git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52617 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
ko1 committed Nov 17, 2015
1 parent c88764f commit 551ae37
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 2 deletions.
9 changes: 9 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
Tue Nov 17 19:32:42 2015 Koichi Sasada <ko1@atdot.net>

* method.h (METHOD_ENTRY_COMPLEMENTED(_SET)): introduced to recognize
complemented method entries or not. There are some cases that callabe
method entries do not have defined_class.

* vm_method.c (rb_method_entry_complement_defined_class):
use METHOD_ENTRY_COMPLEMENTED_SET().

Tue Nov 17 19:02:59 2015 NAKAMURA Usaku <usa@ruby-lang.org>

* configure.in (BASERUBY): use Kernel#print instead of Kernel#p because
Expand Down
2 changes: 2 additions & 0 deletions method.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ typedef struct rb_callable_method_entry_struct { /* same fields with rb_method_e

#define METHOD_ENTRY_VISI(me) (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0))
#define METHOD_ENTRY_BASIC(me) (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2))
#define METHOD_ENTRY_COMPLEMENTED(me) ((me)->flags & IMEMO_FL_USER3)
#define METHOD_ENTRY_COMPLEMENTED_SET(me) ((me)->flags = (me)->flags | IMEMO_FL_USER3)

static inline void
METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi)
Expand Down
4 changes: 2 additions & 2 deletions vm_method.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ rb_method_definition_release(rb_method_definition_t *def, int complemented)
void
rb_free_method_entry(const rb_method_entry_t *me)
{
rb_method_definition_release(me->def, RB_TYPE_P(me->owner, T_MODULE) && RB_TYPE_P(me->defined_class, T_ICLASS));
rb_method_definition_release(me->def, METHOD_ENTRY_COMPLEMENTED(me));
}

static inline rb_method_entry_t *search_method(VALUE klass, ID id, VALUE *defined_class_ptr);
Expand Down Expand Up @@ -400,9 +400,9 @@ rb_method_entry_complement_defined_class(const rb_method_entry_t *src_me, VALUE
rb_method_entry_t *me = rb_method_entry_alloc(src_me->called_id, src_me->owner, defined_class,
method_definition_addref_complement(src_me->def));
METHOD_ENTRY_FLAGS_COPY(me, src_me);
METHOD_ENTRY_COMPLEMENTED_SET(me);

VM_ASSERT(RB_TYPE_P(me->owner, T_MODULE));
VM_ASSERT(RB_TYPE_P(me->defined_class, T_ICLASS));

return (rb_callable_method_entry_t *)me;
}
Expand Down

0 comments on commit 551ae37

Please sign in to comment.