Actions
Bug #3899
closed32 ビットマシンにおいて、symbol table overflow (RuntimeError) が 2Mi 個のシンボルで起きる
ruby -v:
ruby 1.9.3dev (2010-08-31 trunk 29154) [i686-linux]
Backport:
Description
=begin
32 ビットマシンにおいて、
gc.c の rb_obj_id のコメントには、
* symbol ssssssssssssssssssssssss00001110
* symbol 000SSSSSSSSSSSSSSSSSSSSSSSSSSS0 S...S % A = 4 (S...S = s...s * A + 4)
とあり、symbol のための id = hash のための空間は 24bit すなわち 16Mi 個ぶんあるはずなのに、2Mi 個超のシンボルを作ろうとすると、symbol table overflow (RuntimeError) が起きる。
=end
Updated by nobu (Nobuyoshi Nakada) about 14 years ago
- Status changed from Open to Rejected
=begin
IDの最下位3ビットは、ローカル変数やメソッド名、定数名、インスタンス変数名、クラス変数名、グローバル変数名などの、シンボルの分類のために使われています。
したがって、異なる名前のシンボルとしてはID全体の1/8しか作ることはできません。
=end
Actions
Like0
Like0