summaryrefslogtreecommitdiff
path: root/zjit
diff options
context:
space:
mode:
authorJohn Hawthorn <john@hawthorn.email>2026-03-26 14:44:56 -0700
committerJohn Hawthorn <john@hawthorn.email>2026-03-27 09:00:25 -0700
commit851b8f852313c361465cf760701e23db0ea4d474 (patch)
tree93d2291ab29a77803fb11cc12675c36a78f8fb4b /zjit
parent5eff7e0ec2ab405be1db7a57819d50ddf75008e2 (diff)
Remove class alloc check
This checks that the value returned from the function registered with rb_define_alloc_func is of the correct class. When this was first introduced in 1fe40b7cc5 (by Matz on 2001-10-03), allocation was done via user-defined Object#allocate, so it made sense to have a runtime check in release builds. Now that it's defined via rb_define_alloc_func in the C extension API, I don't think it's necessary. The check is surprisingly expensive. Removing it makes Object.new about 10% faster. It allows the C compiler to optimize the call to the function pointer as a tail-call. Removing this also allows ZJIT/YJIT to call the function directly (ZJIT already does this by having a list of known safe allocation functions). There's no way for users to ever have seen this check, other than by writing a misbehaving C extension, which returns objects with the wrong class. [Feature #21966]
Diffstat (limited to 'zjit')
0 files changed, 0 insertions, 0 deletions