From: tonysun329@... Date: 2016-11-06T15:37:13+00:00 Subject: [ruby-core:78015] [Ruby trunk Bug#12905] tailcall_optimization not working as expected under certain condition order Issue #12905 has been reported by Kai Sun. ---------------------------------------- Bug #12905: tailcall_optimization not working as expected under certain condition order https://bugs.ruby-lang.org/issues/12905 * Author: Kai Sun * Status: Open * Priority: Normal * Assignee: * ruby -v: 2.3.1 * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- Below code gets stack too deep error: ~~~ ruby RubyVM::InstructionSequence.compile_option = { :tailcall_optimization => true, :trace_instruction => false } def run_forever(current, final) if current < final run_forever(current+1, final) else nil end end run_forever(1, Float::INFINITY) ~~~ However, below code works as expected: ~~~ ruby RubyVM::InstructionSequence.compile_option = { :tailcall_optimization => true, :trace_instruction => false } def run_forever(current, final) if current >= final nil else run_forever(current+1, final) end end run_forever(1, Float::INFINITY) ~~~ Thanks for looking at this :) -- https://bugs.ruby-lang.org/ Unsubscribe: