Probably this looks like adding a bitset to rb_builtin_function in builtin.h, populating it with tool/mk_builtin_loader.rb, and then consuming it in the HIR builder to flush those locals before/after the builtin.
This is necessary to support ary_fetch_next which is used in the Ruby implementation of Array#each and others to make sure we atomically fetch both the next index and the next element of a collection without another thread mutating the object.
Probably this looks like adding a bitset to
rb_builtin_functioninbuiltin.h, populating it withtool/mk_builtin_loader.rb, and then consuming it in the HIR builder to flush those locals before/after the builtin.This is necessary to support
ary_fetch_nextwhich is used in the Ruby implementation ofArray#eachand others to make sure we atomically fetch both the next index and the next element of a collection without another thread mutating the object.