summaryrefslogtreecommitdiff
path: root/enum.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-07-27 09:27:29 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-07-27 15:40:27 +0900
commit03e7fc895e9dbe420cad192f1ba679df558640dd (patch)
tree7517f1064bc23512543877b9ee89c8d0d890106b /enum.c
parent537e8245613e8f4ccf62f856dd1dff4a012ed395 (diff)
Extracted repeatedly defined IDs
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/4684
Diffstat (limited to 'enum.c')
-rw-r--r--enum.c80
1 files changed, 53 insertions, 27 deletions
diff --git a/enum.c b/enum.c
index 0538f43af4..c576ba7306 100644
--- a/enum.c
+++ b/enum.c
@@ -27,6 +27,19 @@
VALUE rb_mEnumerable;
static ID id_next;
+static ID id__alone;
+static ID id__separator;
+static ID id_chunk_categorize;
+static ID id_chunk_enumerable;
+static ID id_sliceafter_enum;
+static ID id_sliceafter_pat;
+static ID id_sliceafter_pred;
+static ID id_slicebefore_enumerable;
+static ID id_slicebefore_sep_pat;
+static ID id_slicebefore_sep_pred;
+static ID id_slicewhen_enum;
+static ID id_slicewhen_inverted;
+static ID id_slicewhen_pred;
#define id_div idDiv
#define id_each idEach
@@ -3188,8 +3201,8 @@ chunk_ii(RB_BLOCK_CALL_FUNC_ARGLIST(i, _argp))
{
struct chunk_arg *argp = MEMO_FOR(struct chunk_arg, _argp);
VALUE v, s;
- VALUE alone = ID2SYM(rb_intern("_alone"));
- VALUE separator = ID2SYM(rb_intern("_separator"));
+ VALUE alone = ID2SYM(id__alone);
+ VALUE separator = ID2SYM(id__separator);
ENUM_WANT_SVALUE();
@@ -3241,8 +3254,8 @@ chunk_i(RB_BLOCK_CALL_FUNC_ARGLIST(yielder, enumerator))
VALUE arg;
struct chunk_arg *memo = NEW_MEMO_FOR(struct chunk_arg, arg);
- enumerable = rb_ivar_get(enumerator, rb_intern("chunk_enumerable"));
- memo->categorize = rb_ivar_get(enumerator, rb_intern("chunk_categorize"));
+ enumerable = rb_ivar_get(enumerator, id_chunk_enumerable);
+ memo->categorize = rb_ivar_get(enumerator, id_chunk_categorize);
memo->prev_value = Qnil;
memo->prev_elts = Qnil;
memo->yielder = yielder;
@@ -3352,8 +3365,8 @@ enum_chunk(VALUE enumerable)
RETURN_SIZED_ENUMERATOR(enumerable, 0, 0, enum_size);
enumerator = rb_obj_alloc(rb_cEnumerator);
- rb_ivar_set(enumerator, rb_intern("chunk_enumerable"), enumerable);
- rb_ivar_set(enumerator, rb_intern("chunk_categorize"), rb_block_proc());
+ rb_ivar_set(enumerator, id_chunk_enumerable, enumerable);
+ rb_ivar_set(enumerator, id_chunk_categorize, rb_block_proc());
rb_block_call(enumerator, idInitialize, 0, 0, chunk_i, enumerator);
return enumerator;
}
@@ -3400,9 +3413,9 @@ slicebefore_i(RB_BLOCK_CALL_FUNC_ARGLIST(yielder, enumerator))
VALUE arg;
struct slicebefore_arg *memo = NEW_MEMO_FOR(struct slicebefore_arg, arg);
- enumerable = rb_ivar_get(enumerator, rb_intern("slicebefore_enumerable"));
- memo->sep_pred = rb_attr_get(enumerator, rb_intern("slicebefore_sep_pred"));
- memo->sep_pat = NIL_P(memo->sep_pred) ? rb_ivar_get(enumerator, rb_intern("slicebefore_sep_pat")) : Qnil;
+ enumerable = rb_ivar_get(enumerator, id_slicebefore_enumerable);
+ memo->sep_pred = rb_attr_get(enumerator, id_slicebefore_sep_pred);
+ memo->sep_pat = NIL_P(memo->sep_pred) ? rb_ivar_get(enumerator, id_slicebefore_sep_pat) : Qnil;
memo->prev_elts = Qnil;
memo->yielder = yielder;
@@ -3566,15 +3579,15 @@ enum_slice_before(int argc, VALUE *argv, VALUE enumerable)
if (argc != 0)
rb_error_arity(argc, 0, 0);
enumerator = rb_obj_alloc(rb_cEnumerator);
- rb_ivar_set(enumerator, rb_intern("slicebefore_sep_pred"), rb_block_proc());
+ rb_ivar_set(enumerator, id_slicebefore_sep_pred, rb_block_proc());
}
else {
VALUE sep_pat;
rb_scan_args(argc, argv, "1", &sep_pat);
enumerator = rb_obj_alloc(rb_cEnumerator);
- rb_ivar_set(enumerator, rb_intern("slicebefore_sep_pat"), sep_pat);
+ rb_ivar_set(enumerator, id_slicebefore_sep_pat, sep_pat);
}
- rb_ivar_set(enumerator, rb_intern("slicebefore_enumerable"), enumerable);
+ rb_ivar_set(enumerator, id_slicebefore_enumerable, enumerable);
rb_block_call(enumerator, idInitialize, 0, 0, slicebefore_i, enumerator);
return enumerator;
}
@@ -3630,9 +3643,9 @@ sliceafter_i(RB_BLOCK_CALL_FUNC_ARGLIST(yielder, enumerator))
VALUE arg;
struct sliceafter_arg *memo = NEW_MEMO_FOR(struct sliceafter_arg, arg);
- enumerable = rb_ivar_get(enumerator, rb_intern("sliceafter_enum"));
- memo->pat = rb_ivar_get(enumerator, rb_intern("sliceafter_pat"));
- memo->pred = rb_attr_get(enumerator, rb_intern("sliceafter_pred"));
+ enumerable = rb_ivar_get(enumerator, id_sliceafter_enum);
+ memo->pat = rb_ivar_get(enumerator, id_sliceafter_pat);
+ memo->pred = rb_attr_get(enumerator, id_sliceafter_pred);
memo->prev_elts = Qnil;
memo->yielder = yielder;
@@ -3695,9 +3708,9 @@ enum_slice_after(int argc, VALUE *argv, VALUE enumerable)
}
enumerator = rb_obj_alloc(rb_cEnumerator);
- rb_ivar_set(enumerator, rb_intern("sliceafter_enum"), enumerable);
- rb_ivar_set(enumerator, rb_intern("sliceafter_pat"), pat);
- rb_ivar_set(enumerator, rb_intern("sliceafter_pred"), pred);
+ rb_ivar_set(enumerator, id_sliceafter_enum, enumerable);
+ rb_ivar_set(enumerator, id_sliceafter_pat, pat);
+ rb_ivar_set(enumerator, id_sliceafter_pred, pred);
rb_block_call(enumerator, idInitialize, 0, 0, sliceafter_i, enumerator);
return enumerator;
@@ -3760,12 +3773,12 @@ slicewhen_i(RB_BLOCK_CALL_FUNC_ARGLIST(yielder, enumerator))
struct slicewhen_arg *memo =
NEW_PARTIAL_MEMO_FOR(struct slicewhen_arg, arg, inverted);
- enumerable = rb_ivar_get(enumerator, rb_intern("slicewhen_enum"));
- memo->pred = rb_attr_get(enumerator, rb_intern("slicewhen_pred"));
+ enumerable = rb_ivar_get(enumerator, id_slicewhen_enum);
+ memo->pred = rb_attr_get(enumerator, id_slicewhen_pred);
memo->prev_elt = Qundef;
memo->prev_elts = Qnil;
memo->yielder = yielder;
- memo->inverted = RTEST(rb_attr_get(enumerator, rb_intern("slicewhen_inverted")));
+ memo->inverted = RTEST(rb_attr_get(enumerator, id_slicewhen_inverted));
rb_block_call(enumerable, id_each, 0, 0, slicewhen_ii, arg);
memo = MEMO_FOR(struct slicewhen_arg, arg);
@@ -3845,9 +3858,9 @@ enum_slice_when(VALUE enumerable)
pred = rb_block_proc();
enumerator = rb_obj_alloc(rb_cEnumerator);
- rb_ivar_set(enumerator, rb_intern("slicewhen_enum"), enumerable);
- rb_ivar_set(enumerator, rb_intern("slicewhen_pred"), pred);
- rb_ivar_set(enumerator, rb_intern("slicewhen_inverted"), Qfalse);
+ rb_ivar_set(enumerator, id_slicewhen_enum, enumerable);
+ rb_ivar_set(enumerator, id_slicewhen_pred, pred);
+ rb_ivar_set(enumerator, id_slicewhen_inverted, Qfalse);
rb_block_call(enumerator, idInitialize, 0, 0, slicewhen_i, enumerator);
return enumerator;
@@ -3911,9 +3924,9 @@ enum_chunk_while(VALUE enumerable)
pred = rb_block_proc();
enumerator = rb_obj_alloc(rb_cEnumerator);
- rb_ivar_set(enumerator, rb_intern("slicewhen_enum"), enumerable);
- rb_ivar_set(enumerator, rb_intern("slicewhen_pred"), pred);
- rb_ivar_set(enumerator, rb_intern("slicewhen_inverted"), Qtrue);
+ rb_ivar_set(enumerator, id_slicewhen_enum, enumerable);
+ rb_ivar_set(enumerator, id_slicewhen_pred, pred);
+ rb_ivar_set(enumerator, id_slicewhen_inverted, Qtrue);
rb_block_call(enumerator, idInitialize, 0, 0, slicewhen_i, enumerator);
return enumerator;
@@ -4469,5 +4482,18 @@ Init_Enumerable(void)
rb_define_method(rb_mEnumerable, "uniq", enum_uniq, 0);
rb_define_method(rb_mEnumerable, "compact", enum_compact, 0);
+ id__alone = rb_intern_const("_alone");
+ id__separator = rb_intern_const("_separator");
+ id_chunk_categorize = rb_intern_const("chunk_categorize");
+ id_chunk_enumerable = rb_intern_const("chunk_enumerable");
id_next = rb_intern_const("next");
+ id_sliceafter_enum = rb_intern_const("sliceafter_enum");
+ id_sliceafter_pat = rb_intern_const("sliceafter_pat");
+ id_sliceafter_pred = rb_intern_const("sliceafter_pred");
+ id_slicebefore_enumerable = rb_intern_const("slicebefore_enumerable");
+ id_slicebefore_sep_pat = rb_intern_const("slicebefore_sep_pat");
+ id_slicebefore_sep_pred = rb_intern_const("slicebefore_sep_pred");
+ id_slicewhen_enum = rb_intern_const("slicewhen_enum");
+ id_slicewhen_inverted = rb_intern_const("slicewhen_inverted");
+ id_slicewhen_pred = rb_intern_const("slicewhen_pred");
}