< prev index next >

src/hotspot/share/gc/g1/g1CardSetContainers.hpp

Print this page

 11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 12  * version 2 for more details (a copy is included in the LICENSE file that
 13  * accompanied this code).
 14  *
 15  * You should have received a copy of the GNU General Public License version
 16  * 2 along with this work; if not, write to the Free Software Foundation,
 17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 18  *
 19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 20  * or visit www.oracle.com if you need additional information or have any
 21  * questions.
 22  *
 23  */
 24 
 25 #ifndef SHARE_GC_G1_G1CARDSETCONTAINERS_HPP
 26 #define SHARE_GC_G1_G1CARDSETCONTAINERS_HPP
 27 
 28 #include "gc/g1/g1CardSet.hpp"
 29 #include "memory/allocation.hpp"
 30 #include "runtime/atomic.hpp"
 31 #include "utilities/bitMap.inline.hpp"
 32 #include "utilities/globalDefinitions.hpp"
 33 #include "utilities/spinYield.hpp"
 34 
 35 #include "logging/log.hpp"
 36 
 37 #include "runtime/thread.inline.hpp"
 38 
 39 // A helper class to encode a few card indexes within a CardSetPtr.
 40 //
 41 // The pointer value (either 32 or 64 bits) is split into two areas:
 42 //
 43 // - Header containing identifying tag and number of encoded cards.
 44 // - Data area containing the card indexes themselves
 45 //
 46 // The header starts (from LSB) with the identifying tag (two bits,
 47 // always 00), and three bits size. The size stores the number of
 48 // valid card indexes after the header.
 49 //
 50 // The data area makes up the remainder of the word, with card indexes
 51 // put one after another at increasing bit positions. The separate

 11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 12  * version 2 for more details (a copy is included in the LICENSE file that
 13  * accompanied this code).
 14  *
 15  * You should have received a copy of the GNU General Public License version
 16  * 2 along with this work; if not, write to the Free Software Foundation,
 17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 18  *
 19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 20  * or visit www.oracle.com if you need additional information or have any
 21  * questions.
 22  *
 23  */
 24 
 25 #ifndef SHARE_GC_G1_G1CARDSETCONTAINERS_HPP
 26 #define SHARE_GC_G1_G1CARDSETCONTAINERS_HPP
 27 
 28 #include "gc/g1/g1CardSet.hpp"
 29 #include "memory/allocation.hpp"
 30 #include "runtime/atomic.hpp"
 31 #include "utilities/bitMap.hpp"
 32 #include "utilities/globalDefinitions.hpp"
 33 #include "utilities/spinYield.hpp"
 34 
 35 #include "logging/log.hpp"
 36 
 37 #include "runtime/thread.inline.hpp"
 38 
 39 // A helper class to encode a few card indexes within a CardSetPtr.
 40 //
 41 // The pointer value (either 32 or 64 bits) is split into two areas:
 42 //
 43 // - Header containing identifying tag and number of encoded cards.
 44 // - Data area containing the card indexes themselves
 45 //
 46 // The header starts (from LSB) with the identifying tag (two bits,
 47 // always 00), and three bits size. The size stores the number of
 48 // valid card indexes after the header.
 49 //
 50 // The data area makes up the remainder of the word, with card indexes
 51 // put one after another at increasing bit positions. The separate
< prev index next >