module MimiCheck::TailCallOptimization

Public Instance Methods

tail_recursive(name) click to toggle source
# File lib/mimicheck/tail_call_optimization.rb, line 5
    def tail_recursive(name)
      fn = instance_method(name)

      RubyVM::InstructionSequence.compile_option = {
        tailcall_optimization: true,
        trace_instruction: false
      }

      iseq = RubyVM::InstructionSequence.new(<<-EOS)
      class #{self}
        #{fn.source}
      end
      EOS

      iseq.eval
      iseq.disasm
    end