summaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
author卜部昌平 <shyouhei@ruby-lang.org>2019-09-20 14:12:51 +0900
committer卜部昌平 <shyouhei@ruby-lang.org>2019-09-30 10:26:38 +0900
commitcf336082039ae84b5001908f6bb7e04bdda8893e (patch)
tree4a89c410a24a8bfd946deee2c1358734c6fd3357 /proc.c
parent3632a812c0b1e0bd1c75b2426cbfe9ec1715bb56 (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.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/proc.c b/proc.c
index 667b86ac1b..496baa41f1 100644
--- a/proc.c
+++ b/proc.c
@@ -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);