Make the small_id_table a bitset.
authorRodrigo Kumpera <kumpera@gmail.com>
Wed, 6 Apr 2011 00:44:54 +0000 (21:44 -0300)
committerRodrigo Kumpera <kumpera@gmail.com>
Wed, 6 Apr 2011 01:36:46 +0000 (22:36 -0300)
commite56aa33806a2297bb8bb0284300c5bedf86aa08e
tree381e1b0bb66acfe63b0c14fa23bc85a41b99b792
parentfc1f92ea88ceee12a54cd09f717ae6f746d7cd7d
Make the small_id_table a bitset.

* object-internals.h (MonoInternalThread): Use
unused5 to hold the conservative root to the thread itself.

* threads.c: MonoInternalThread objects have the peculiarity
that they must be pinned since we hold its value on TLS.
To solve it we register the field thread_pinning_ref as
a conservative root, causing them to be pinned.

* hazard-pointer.c: The small id allocation code no longer
depends on MonoInternalThread, change small_id_table to be
a bitset instead of an array of pointers.
mono/metadata/object-internals.h
mono/metadata/threads.c
mono/utils/hazard-pointer.c
mono/utils/hazard-pointer.h