diff options
author | 卜部昌平 <shyouhei@ruby-lang.org> | 2019-09-20 14:12:51 +0900 |
---|---|---|
committer | 卜部昌平 <shyouhei@ruby-lang.org> | 2019-09-30 10:26:38 +0900 |
commit | cf336082039ae84b5001908f6bb7e04bdda8893e (patch) | |
tree | 4a89c410a24a8bfd946deee2c1358734c6fd3357 /proc.c | |
parent | 3632a812c0b1e0bd1c75b2426cbfe9ec1715bb56 (diff) |
refactor constify most of rb_method_definition_t
Most (if not all) of the fields of rb_method_definition_t are never
meant to be modified once after they are stored. Marking them const
makes it possible for compilers to warn on unintended modifications.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/2486
Diffstat (limited to 'proc.c')
-rw-r--r-- | proc.c | 9 |
1 files changed, 4 insertions, 5 deletions
@@ -15,6 +15,8 @@ #include "vm_core.h" #include "iseq.h" +extern const rb_method_definition_t *rb_method_definition_create(rb_method_type_t type, ID mid); + /* Proc.new with no block will raise an exception in the future * versions */ #define PROC_NEW_REQUIRES_BLOCK 0 @@ -1475,15 +1477,12 @@ mnew_missing(VALUE klass, VALUE obj, ID id, VALUE mclass) struct METHOD *data; VALUE method = TypedData_Make_Struct(mclass, struct METHOD, &method_data_type, data); rb_method_entry_t *me; - rb_method_definition_t *def; + const rb_method_definition_t *def; RB_OBJ_WRITE(method, &data->recv, obj); RB_OBJ_WRITE(method, &data->klass, klass); - def = ZALLOC(rb_method_definition_t); - def->type = VM_METHOD_TYPE_MISSING; - def->original_id = id; - + def = rb_method_definition_create(VM_METHOD_TYPE_MISSING, id); me = rb_method_entry_create(id, klass, METHOD_VISI_UNDEF, def); RB_OBJ_WRITE(method, &data->me, me); |