From: "nobu (Nobuyoshi Nakada) via ruby-core" Date: 2024-10-25T14:26:44+00:00 Subject: [ruby-core:119616] [Ruby master Misc#20814] iseq optimizations on constant condition Issue #20814 has been updated by nobu (Nobuyoshi Nakada). Status changed from Open to Feedback Because of the dynamic feature of Ruby, the optimization on ISeq is very limited. For instance, elimination of unreachable branch because of a simple always-true/false condition expression, in your example. > - is there way to disable such optimizations? To disable optimizations, see the document of `RubyVM::InstructionSequence.compile_option=`. https://docs.ruby-lang.org/en/master/RubyVM/InstructionSequence.html#method-c-compile_option-3D > - are there some specs on things that can be optimized. We do not provide explicit documentation or specifications regarding optimizations because they are internal features and may change without notice. ---------------------------------------- Misc #20814: iseq optimizations on constant condition https://bugs.ruby-lang.org/issues/20814#change-110238 * Author: hurricup (Alexandr Evstigneev) * Status: Feedback ---------------------------------------- ruby 3.4-preview2 seems optimizes out some stuff when building iseq and this may lead to user unexpected behavior when debugging, because some lines just optimized out. Example: ``` def foo1 if true nil else 1 end end ``` produces: ``` == disasm: # 0000 putnil ( 3)[LiCa] 0001 leave ( 7)[Re] ``` Two questions: - is there way to disable such optimizations? - are there some specs on things that can be optimized. -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/