From 28b5c30b964c9e6121a2ee04454905c81a3e2646 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 10 Sep 2021 10:23:28 +0900 Subject: ops.h: add `OP_SYMBOL` instruction. It generates a symbol by interning from the pool string. --- mrbgems/mruby-compiler/core/codegen.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'mrbgems/mruby-compiler') diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index b8891cf1b..7327f2cef 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1757,6 +1757,16 @@ static void gen_intern(codegen_scope *s) { pop(); + if (!no_peephole(s)) { + struct mrb_insn_data data = mrb_last_insn(s); + + if (data.insn == OP_STRING && data.a == cursp()) { + rewind_pc(s); + genop_2(s, OP_SYMBOL, data.a, data.b); + push(); + return; + } + } genop_1(s, OP_INTERN, cursp()); push(); } -- cgit v1.2.3