Shyouhei Urabe <shyouhei / ruby-lang.org> wrote:
> Instead of avoiding exceptions I would like to suggest making
> exceptions lightweight.

The other problem with the exception from *_nonblock is the exceptions
are extended with IO::Wait*able modules.  Object#extend causes a VM
state change which expires the inline and method caches.

Expiring the method cache for this is cheap in 1.9.3, but cache
misses are probably still costly for larger apps (I have not
investigated the cost of cache misses, only cache expiry cost).