mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 08:33:58 +02:00
refactor constify most of rb_method_entry_t
Now that we have eliminated most destructive operations over the rb_method_entry_t / rb_callable_method_entry_t, let's make them mostly immutabe and mark them const. One exception is rb_export_method(), which destructively modifies visibilities of method entries. I have left that operation as is because I suspect that destructiveness is the nature of that function.
This commit is contained in:
parent
6c6a25feca
commit
dd883de5ba
Notes:
git
2019-09-30 10:27:04 +09:00
9 changed files with 88 additions and 109 deletions
8
proc.c
8
proc.c
|
@ -1426,7 +1426,7 @@ bm_compact(void *ptr)
|
|||
UPDATE_REFERENCE(data->recv);
|
||||
UPDATE_REFERENCE(data->klass);
|
||||
UPDATE_REFERENCE(data->iclass);
|
||||
UPDATE_TYPED_REFERENCE(rb_method_entry_t *, data->me);
|
||||
UPDATE_TYPED_REFERENCE(const rb_method_entry_t *, data->me);
|
||||
}
|
||||
|
||||
static size_t
|
||||
|
@ -1519,7 +1519,7 @@ mnew_internal(const rb_method_entry_t *me, VALUE klass, VALUE iclass,
|
|||
if (me->defined_class) {
|
||||
VALUE klass = RCLASS_SUPER(RCLASS_ORIGIN(me->defined_class));
|
||||
id = me->def->original_id;
|
||||
me = (rb_method_entry_t *)rb_callable_method_entry_with_refinements(klass, id, &iclass);
|
||||
me = (const rb_method_entry_t *)rb_callable_method_entry_with_refinements(klass, id, &iclass);
|
||||
}
|
||||
else {
|
||||
VALUE klass = RCLASS_SUPER(me->owner);
|
||||
|
@ -1557,7 +1557,7 @@ mnew(VALUE klass, VALUE obj, ID id, VALUE mclass, int scope)
|
|||
me = rb_method_entry_with_refinements(klass, id, &iclass);
|
||||
}
|
||||
else {
|
||||
me = (rb_method_entry_t *)rb_callable_method_entry_with_refinements(klass, id, &iclass);
|
||||
me = (const rb_method_entry_t *)rb_callable_method_entry_with_refinements(klass, id, &iclass);
|
||||
}
|
||||
return mnew_from_me(me, klass, iclass, obj, id, mclass, scope);
|
||||
}
|
||||
|
@ -2947,7 +2947,7 @@ method_super_method(VALUE method)
|
|||
super_class = RCLASS_SUPER(RCLASS_ORIGIN(iclass));
|
||||
mid = data->me->called_id;
|
||||
if (!super_class) return Qnil;
|
||||
me = (rb_method_entry_t *)rb_callable_method_entry_with_refinements(super_class, mid, &iclass);
|
||||
me = (const rb_method_entry_t *)rb_callable_method_entry_with_refinements(super_class, mid, &iclass);
|
||||
if (!me) return Qnil;
|
||||
return mnew_internal(me, me->owner, iclass, data->recv, mid, rb_obj_class(method), FALSE, FALSE);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue