Project

General

Profile

Actions

Bug #3899

closed

32 ビットマシンにおいて、symbol table overflow (RuntimeError) が 2Mi 個のシンボルで起きる

Added by metanest (Makoto Kishimoto) over 13 years ago. Updated almost 13 years ago.

Status:
Rejected
Assignee:
-
Target version:
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

Actions #1

Updated by nobu (Nobuyoshi Nakada) over 13 years ago

  • Status changed from Open to Rejected

=begin
IDの最下位3ビットは、ローカル変数やメソッド名、定数名、インスタンス変数名、クラス変数名、グローバル変数名などの、シンボルの分類のために使われています。
したがって、異なる名前のシンボルとしてはID全体の1/8しか作ることはできません。
=end

Actions

Also available in: Atom PDF

Like0
Like0