From: nagachika Date: 2008-08-26T00:57:12+09:00 Subject: [ruby-dev:35972] Re: [Feature: trunk] relayouting struct RNode nagachika と申します。 RHGの逆襲ではお世話になっています。 > 1) 行番号に使う > 行番号のMAXが15bit増えます。現状では32bit環境でも2**17あるので現実的に > 特に困ることはないと思いますが、もう少し増えても悪くはないかもしれません。 先日さわださんが報告していたように、例外のバックトレースや caller に含まれる 行番号は 65536 で overflow するようでした。確かに struct RNode では 17 bit (long が 32bit の環境で)まで使えているのですが、VM の実行コードにコンパイルされると struct iseq_insn_info_entry という構造体の line_no メンバに格納され、これが unsigned short に定義されているためでした。 ですので nd_line を拡張するのは意味解析/コンパイルエラーのメッセージには有効ですが、 実行時のバックトレースの情報はこの構造体の定義も拡張しないといけません。 コンパイル後の構造はよく調べていませんけど、使用メモリ量が増えそうですし、 行番号に使うのはもったいないかなぁと思います。 4分木にして嬉しいことがあるならそれでいいのかなと思います。