diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-11-25 23:14:38 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-11-25 23:14:38 +0900 |
| commit | 71f9add1c5a655d6265147be0546d9770ed0f629 (patch) | |
| tree | 48afcccf67afb4ea8243571dd1a5b36654acfb14 /src/array.c | |
| parent | fba7874a680ef686ae1d3915dbadbe7a3a26b8b7 (diff) | |
| download | mruby-71f9add1c5a655d6265147be0546d9770ed0f629.tar.gz mruby-71f9add1c5a655d6265147be0546d9770ed0f629.zip | |
Move inline `iseq` in `array.c` to `array.rb`.
There's no efficiency difference since `cdump` is implemented.
Diffstat (limited to 'src/array.c')
| -rw-r--r-- | src/array.c | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/src/array.c b/src/array.c index 4125e876e..ca00b6f3e 100644 --- a/src/array.c +++ b/src/array.c @@ -1288,67 +1288,6 @@ mrb_ary_svalue(mrb_state *mrb, mrb_value ary) } } -static const mrb_code each_iseq[] = { - OP_ENTER, 0x0, 0x00, 0x1, /* OP_ENTER 0:0:0:0:0:0:1 */ - OP_JMPIF, 0x1, 0x0, 19, /* OP_JMPIF R1 19 */ - OP_LOADSELF, 0x3, /* OP_LOADSELF R3 */ - OP_LOADSYM, 0x4, 0x0, /* OP_LOADSYM R4 :each*/ - OP_SEND, 0x3, 0x1, 0x1, /* OP_SEND R3 :to_enum 1 */ - OP_RETURN, 0x3, /* OP_RETURN R3 */ - OP_LOADI_0, 0x2, /* OP_LOADI_0 R2 */ - OP_JMP, 0x0, 43, /* OP_JMP 49 */ - OP_MOVE, 0x3, 0x1, /* OP_MOVE R3 R1 */ - OP_LOADSELF, 0x4, /* OP_LOADSELF R4 */ - OP_MOVE, 0x5, 0x2, /* OP_MOVE R5 R2 */ - OP_SEND, 0x4, 0x2, 0x1, /* OP_SEND R4 :[] 1 */ - OP_SEND, 0x3, 0x3, 0x1, /* OP_SEND R3 :call 1 */ - OP_ADDI, 0x2, 1, /* OP_ADDI R3 1 */ - OP_MOVE, 0x3, 0x2, /* OP_MOVE R3 R2 */ - OP_LOADSELF, 0x4, /* OP_LOADSELF R4 */ - OP_SEND, 0x4, 0x4, 0x0, /* OP_SEND R4 :length 0 */ - OP_LT, 0x3, /* OP_LT R3 */ - OP_JMPIF, 0x3, 0x0, 24, /* OP_JMPIF R3 24 */ - OP_RETURN, 0x0 /* OP_RETURN R3 */ -}; - -static const mrb_sym each_syms[] = { - MRB_SYM(each), - MRB_SYM(to_enum), - MRB_OPSYM(aref), - MRB_SYM(call), - MRB_SYM(length), -}; - -static const mrb_irep each_irep = { - 3, /* nlocals */ - 7, /* nregs */ - 0, /* clen */ - MRB_ISEQ_NO_FREE | MRB_IREP_NO_FREE, /* flags */ - each_iseq, /* iseq */ - NULL, /* pool */ - each_syms, /* syms */ - NULL, /* reps */ - NULL, /* lv */ - NULL, /* debug_info */ - sizeof(each_iseq), /* ilen */ - 0, /* plen */ - sizeof(each_syms), /* slen */ - 1, /* rlen */ - 0, /* refcnt */ -}; - -static void -init_ary_each(mrb_state *mrb, struct RClass *ary) -{ - struct RProc *p; - mrb_method_t m; - - p = mrb_proc_new(mrb, &each_irep); - p->flags |= MRB_PROC_SCOPE | MRB_PROC_STRICT; - MRB_METHOD_FROM_PROC(m, p); - mrb_define_method_raw(mrb, ary, MRB_SYM(each), m); -} - void mrb_init_array(mrb_state *mrb) { @@ -1389,6 +1328,4 @@ mrb_init_array(mrb_state *mrb) mrb_define_method(mrb, a, "__ary_cmp", mrb_ary_cmp, MRB_ARGS_REQ(1)); mrb_define_method(mrb, a, "__ary_index", mrb_ary_index_m, MRB_ARGS_REQ(1)); /* kept for mruby-array-ext */ mrb_define_method(mrb, a, "__svalue", mrb_ary_svalue, MRB_ARGS_NONE()); - - init_ary_each(mrb, a); } |
