36 private:
37 // Support methods for resizing the card table.
38 // resize_commit_uncommit() returns true if the pages were committed or
39 // uncommitted
40 bool resize_commit_uncommit(int changed_region, MemRegion new_region);
41 void resize_update_card_table_entries(int changed_region,
42 MemRegion new_region);
43 void resize_update_committed_table(int changed_region, MemRegion new_region);
44 void resize_update_covered_table(int changed_region, MemRegion new_region);
45
46 protected:
47
48 static void verify_all_young_refs_precise_helper(MemRegion mr);
49
50 public:
51 enum ExtendedCardValue {
52 youngergen_card = CardTableModRefBS::CT_MR_BS_last_reserved + 1,
53 verify_card = CardTableModRefBS::CT_MR_BS_last_reserved + 5
54 };
55
56 CardTableExtension(MemRegion whole_heap, int max_covered_regions) :
57 CardTableModRefBS(whole_heap, max_covered_regions) { }
58
59 // Too risky for the 4/10/02 putback
60 // BarrierSet::Name kind() { return BarrierSet::CardTableExtension; }
61
62 // Scavenge support
63 void scavenge_contents_parallel(ObjectStartArray* start_array,
64 MutableSpace* sp,
65 HeapWord* space_top,
66 PSPromotionManager* pm,
67 uint stripe_number,
68 uint stripe_total);
69
70 // Verification
71 static void verify_all_young_refs_imprecise();
72 static void verify_all_young_refs_precise();
73
74 bool addr_is_marked_imprecise(void *addr);
75 bool addr_is_marked_precise(void *addr);
76
77 void set_card_newgen(void* addr) { jbyte* p = byte_for(addr); *p = verify_card; }
|
36 private:
37 // Support methods for resizing the card table.
38 // resize_commit_uncommit() returns true if the pages were committed or
39 // uncommitted
40 bool resize_commit_uncommit(int changed_region, MemRegion new_region);
41 void resize_update_card_table_entries(int changed_region,
42 MemRegion new_region);
43 void resize_update_committed_table(int changed_region, MemRegion new_region);
44 void resize_update_covered_table(int changed_region, MemRegion new_region);
45
46 protected:
47
48 static void verify_all_young_refs_precise_helper(MemRegion mr);
49
50 public:
51 enum ExtendedCardValue {
52 youngergen_card = CardTableModRefBS::CT_MR_BS_last_reserved + 1,
53 verify_card = CardTableModRefBS::CT_MR_BS_last_reserved + 5
54 };
55
56 CardTableExtension(MemRegion whole_heap) :
57 CardTableModRefBS(whole_heap) { }
58
59 // Too risky for the 4/10/02 putback
60 // BarrierSet::Name kind() { return BarrierSet::CardTableExtension; }
61
62 // Scavenge support
63 void scavenge_contents_parallel(ObjectStartArray* start_array,
64 MutableSpace* sp,
65 HeapWord* space_top,
66 PSPromotionManager* pm,
67 uint stripe_number,
68 uint stripe_total);
69
70 // Verification
71 static void verify_all_young_refs_imprecise();
72 static void verify_all_young_refs_precise();
73
74 bool addr_is_marked_imprecise(void *addr);
75 bool addr_is_marked_precise(void *addr);
76
77 void set_card_newgen(void* addr) { jbyte* p = byte_for(addr); *p = verify_card; }
|