< prev index next >

src/hotspot/share/gc/shared/cardTable.hpp

Print this page

        

@@ -101,15 +101,19 @@
   // region per generation is needed.
   static const int _max_covered_regions = 2;
 
   enum CardValues {
     clean_card                  = (CardValue)-1,
+    // The mask contains zeros in places for all other values.
+    clean_card_mask             = clean_card - 31,
 
     dirty_card                  =  0,
     precleaned_card             =  1,
-    last_card                   =  2,
-    CT_MR_BS_last_reserved      =  4
+    claimed_card                =  2,
+    deferred_card               =  4,
+    last_card                   =  8,
+    CT_MR_BS_last_reserved      = 16
   };
 
   // a word's worth (row) of clean card values
   static const intptr_t clean_card_row = (intptr_t)(-1);
 

@@ -236,12 +240,15 @@
     card_size                   = 1 << card_shift,
     card_size_in_words          = card_size / sizeof(HeapWord)
   };
 
   static CardValue clean_card_val()          { return clean_card; }
+  static CardValue clean_card_mask_val()     { return clean_card_mask; }
   static CardValue dirty_card_val()          { return dirty_card; }
+  static CardValue claimed_card_val()        { return claimed_card; }
   static CardValue precleaned_card_val()     { return precleaned_card; }
+  static CardValue deferred_card_val()       { return deferred_card; }
   static intptr_t clean_card_row_val()   { return clean_card_row; }
 
   // Card marking array base (adjusted for heap low boundary)
   // This would be the 0th element of _byte_map, if the heap started at 0x0.
   // But since the heap starts at some higher address, this points to somewhere
< prev index next >