This was failing on crossruby, likely because HAVE_GCC_ATOMIC_BUILTINS was true, but HAVE_GCC_ATOMIC_BUILTINS_64 was false. We probably should have feature detection of 64-bit stdatomics like we do for GCC, but for now let's keep rbimpl_...jhawthorn (John Hawthorn)
Previously this held a pointer to the Fiber itself, which requires marking it (which was only implemented recently, prior to that it was buggy). Using a monotonically increasing integer instead allows us to avoid having a free function a...jhawthorn (John Hawthorn)
Found by wbcheck It seems like here the classext was associated with the class, but it already had Ruby objects attached. rb_gc_writebarrier_remember works around that issue, but I suspect if we enabled autocompaction the values copied...jhawthorn (John Hawthorn)
@jpl-coconut Please do! This seems like a really good demonstration of the issue and a good start on addressing it. The change is a lot smaller than I expected it to be ❤️. We would only make performance improvements like this to the `ma...jhawthorn (John Hawthorn)
Previously calling a singleton method with invalid arguments would give: RuntimeError: Incompatible locations This is because `join` wants the operator to come before the location https://github.com/ruby/error_highlight/commit/449...jhawthorn (John Hawthorn)
When calling getnameinfo we spawn a thread because it may do a slow, blocking reverse-DNS lookup. Spawning a thread is relatively fast (~20µs on my Linux machine) but still an order of magnitude slower than when getnameinfo is simply tra...jhawthorn (John Hawthorn)
Previously because we did a stack_push before ccall, in some cases we could end up pushing an uninitialized value to the VM stack when spilling regs as part of the ccall. Co-authored-by: Luke Gruber <luke.gru@gmail.com>jhawthorn (John Hawthorn)