From: takashikkbn@... Date: 2020-06-12T00:42:56+00:00 Subject: [ruby-core:98757] [Ruby master Bug#16941] MJIT doesn't identify Struct kind of instruction Issue #16941 has been updated by k0kubun (Takashi Kokubun). > I didn't understand the need to compile the block every time it is being called. Good point. If there's only one block definition, only one JIT compilation attempt should happen regardless of how Struct is handled in it. I think I was a little bit confused, and I need more information to understand your problem more. Could you provide a single script and a command which reproduces "it attempts every time" a method is called? In your current script and logs in the description, `my_script` is called only once and it's compiled once, and I don't see the "it attempts every time" problem there. > Can you refer me to some documentation for understanding execution with JIT? The only official documentation of JIT available right now is https://bugs.ruby-lang.org/projects/ruby/wiki/MJIT, but I think your problem seems a little bit complicated. So let me figure out what the problem is first to revise my explanation of it for you. ---------------------------------------- Bug #16941: MJIT doesn't identify Struct kind of instruction https://bugs.ruby-lang.org/issues/16941#change-86114 * Author: abhsha (Abhishek Sharma) * Status: Feedback * Priority: Normal * Assignee: k0kubun (Takashi Kokubun) * ruby -v: 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- MJIT does not identify Struct instructions and gives a warning while compiling to C. Example: def my_method 1.times do a_struct = Struct.new(:a).new a_struct.a = "a" end end my_method $: ruby --jit-save-temps --jit-min-calls=1 --disable-gems --jit --jit-verbose=2 --jit-wait test.rb output: start compilation: a=@test.rb:3 -> /tmp/_ruby_mjit_p30696u2.c MJIT warning: Skipped to compile unsupported instruction: opt_call_c_function JIT failure (0.0ms): a=@test.rb:3 -> /tmp/_ruby_mjit_p30696u2.c Are structs not recognised by JIT compiler? We have this call in our programs many number of times (~ 10^6), it attempts every time and fails. Can this be a cause of programs to get slower with --jit enabled ? -- https://bugs.ruby-lang.org/ Unsubscribe: