This adds specialization for Class#allocate to perform the same inlining that Class#new will do. This was done conservatively, only inlining when we see a known leaf allocator so that there's no difference between interpreter and JIT if ...jhawthorn (John Hawthorn)
```ruby class C include Enumerable def each(&b) $b = b yield 1 end end Set[1, 2, 3] & C.new $b.call(1) # [BUG] Segmentation fault at 0x00007f21bfa67f60 ``` The cause is essentially the same as #5801, we're in...jhawthorn (John Hawthorn)
* [Feature #21981] Remove CREF rewriting for methods on cloned classes/modules * Current behaviour is inconsistent with all other constant references being lexically scoped (inheritance, mixins, define_method). Only `Class#{dup,clone}...jhawthorn (John Hawthorn)
onig_foreach_name is totally synchronous (either a for loop or an st_foreach), so it should be safe to pass data on the stack rather than allocating an IMEMO.jhawthorn (John Hawthorn)
We always know when this contains a VALUE and even fire a write barrier for it. We should use this when marking, support compaction, and no longer need conservative marking.jhawthorn (John Hawthorn)
That makes sense that this crashes. We're allowing the GC to provide xmalloc and xfree, and in Ruby 4.1dev under debug that has additional padding. We should have an xmalloc equivalent of malloc_usable_size (at least in the one place we ...jhawthorn (John Hawthorn)