diff options
author | Alan Wu <XrXr@users.noreply.github.com> | 2023-11-28 20:41:40 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-29 01:41:40 +0000 |
commit | fcabe2df39b892458cb1f67437852c4acbb245a6 (patch) | |
tree | 8862de7e37abeabcd5fa5598afac7b211596caeb /vm_method.c | |
parent | bed014e374c6a4a7cec15a18e9dd702b674706d9 (diff) | |
download | ruby-fcabe2df39b892458cb1f67437852c4acbb245a6.tar.gz |
Remove written-but-never-read `me->def.body.refined.owner`
This also removes aliasing rule violations; the anonymous structs were
distinct types from `rb_method_refined_t`.
Diffstat (limited to 'vm_method.c')
-rw-r--r-- | vm_method.c | 36 |
1 files changed, 9 insertions, 27 deletions
diff --git a/vm_method.c b/vm_method.c index 6b05b38e4d..1f14d82bcd 100644 --- a/vm_method.c +++ b/vm_method.c @@ -585,9 +585,7 @@ rb_method_definition_set(const rb_method_entry_t *me, rb_method_definition_t *de return; case VM_METHOD_TYPE_REFINED: { - const rb_method_refined_t *refined = (rb_method_refined_t *)opts; - RB_OBJ_WRITE(me, &def->body.refined.orig_me, refined->orig_me); - RB_OBJ_WRITE(me, &def->body.refined.owner, refined->owner); + RB_OBJ_WRITE(me, &def->body.refined.orig_me, (rb_method_entry_t *)opts); return; } case VM_METHOD_TYPE_ALIAS: @@ -623,7 +621,6 @@ method_definition_reset(const rb_method_entry_t *me) break; case VM_METHOD_TYPE_REFINED: RB_OBJ_WRITTEN(me, Qundef, def->body.refined.orig_me); - RB_OBJ_WRITTEN(me, Qundef, def->body.refined.owner); break; case VM_METHOD_TYPE_ALIAS: RB_OBJ_WRITTEN(me, Qundef, def->body.alias.original_me); @@ -706,12 +703,7 @@ rb_method_entry_clone(const rb_method_entry_t *src_me) // can create reference edges we can't run WBs for. rb_method_definition_t *clone_def = rb_method_definition_create(VM_METHOD_TYPE_REFINED, src_me->called_id); - - rb_method_refined_t refined = { - .owner = src_me->def->body.refined.owner, - .orig_me = orig_clone, - }; - rb_method_definition_set(me, clone_def, &refined); + rb_method_definition_set(me, clone_def, orig_clone); } return me; } @@ -721,10 +713,7 @@ rb_method_entry_complement_defined_class(const rb_method_entry_t *src_me, ID cal { rb_method_definition_t *def = src_me->def; rb_method_entry_t *me; - struct { - const struct rb_method_entry_struct *orig_me; - VALUE owner; - } refined = {0}; + const rb_method_entry_t *refined_orig_me = NULL; if (!src_me->defined_class && def->type == VM_METHOD_TYPE_REFINED && @@ -732,8 +721,7 @@ rb_method_entry_complement_defined_class(const rb_method_entry_t *src_me, ID cal const rb_method_entry_t *orig_me = rb_method_entry_clone(def->body.refined.orig_me); RB_OBJ_WRITE((VALUE)orig_me, &orig_me->defined_class, defined_class); - refined.orig_me = orig_me; - refined.owner = orig_me->owner; + refined_orig_me = orig_me; def = NULL; } @@ -742,7 +730,7 @@ rb_method_entry_complement_defined_class(const rb_method_entry_t *src_me, ID cal METHOD_ENTRY_COMPLEMENTED_SET(me); if (!def) { def = rb_method_definition_create(VM_METHOD_TYPE_REFINED, called_id); - rb_method_definition_set(me, def, &refined); + rb_method_definition_set(me, def, (void *)refined_orig_me); } VM_ASSERT(RB_TYPE_P(me->owner, T_MODULE)); @@ -769,25 +757,19 @@ make_method_entry_refined(VALUE owner, rb_method_entry_t *me) return; } else { - struct { - struct rb_method_entry_struct *orig_me; - VALUE owner; - } refined; rb_method_definition_t *def; rb_vm_check_redefinition_opt_method(me, me->owner); - refined.orig_me = + struct rb_method_entry_struct *orig_me = rb_method_entry_alloc(me->called_id, me->owner, - me->defined_class ? - me->defined_class : owner, + me->defined_class ? me->defined_class : owner, me->def, true); - METHOD_ENTRY_FLAGS_COPY(refined.orig_me, me); - refined.owner = owner; + METHOD_ENTRY_FLAGS_COPY(orig_me, me); def = rb_method_definition_create(VM_METHOD_TYPE_REFINED, me->called_id); - rb_method_definition_set(me, def, (void *)&refined); + rb_method_definition_set(me, def, orig_me); METHOD_ENTRY_VISI_SET(me, METHOD_VISI_PUBLIC); } } |