なかだです。

At Wed, 20 Jun 2012 07:50:25 +0900,
Tanaka Akira wrote in [ruby-dev:45783]:
> うぅむ。これは rb_num2uint を変えた方がまだマシなような。
> (根本的には親プロセスで mode_t な値に変換するのが適切でしょうが)

というか以前からすでにそうなっていますよね。rb_execarg_addopt()
では、一旦NUM2MODET()で変換してからarrayに入れるためにもう一度
Integerに戻しています。つまり、元々rb_execarg_run_options()での
チェックは二重なので不要だったわけです。mode_tがFIXABLEでない値
まで持てる環境の可能性を考えると、LONG2NUM()よりもLONG2FIX()のほ
うが適切ではないかと思いますが。

> また、numeric.c の部分も適用すれば、rb_call0 が呼ばれなくなることを
> 確認できます。

これはこれで最適化としてはありではないかと思います。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦