comparison src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp @ 1705:2d160770d2e5

6814437: G1: remove the _new_refs array Summary: The per-worker _new_refs array is used to hold references that point into the collection set. It is populated during RSet updating and subsequently processed. In the event of an evacuation failure it processed again to recreate the RSets of regions in the collection set. Remove the per-worker _new_refs array by processing the references directly. Use a DirtyCardQueue to hold the cards containing the references so that the RSets of regions in the collection set can be recreated when handling an evacuation failure. Reviewed-by: iveresov, jmasa, tonyp
author johnc
date Mon, 02 Aug 2010 12:51:43 -0700
parents c18cbe5936b8
children f95d63e2154a
comparison
equal deleted inserted replaced
1704:63f4675ac87d 1705:2d160770d2e5
1 /* 1 /*
2 * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
182 // returns NULL. If it causes an eviction, returns the evicted pointer. 182 // returns NULL. If it causes an eviction, returns the evicted pointer.
183 // Otherwise, its a cache hit, and returns NULL. 183 // Otherwise, its a cache hit, and returns NULL.
184 jbyte* cache_insert(jbyte* card_ptr, bool* defer); 184 jbyte* cache_insert(jbyte* card_ptr, bool* defer);
185 185
186 // Process the cached entries. 186 // Process the cached entries.
187 void clean_up_cache(int worker_i, G1RemSet* g1rs); 187 void clean_up_cache(int worker_i, G1RemSet* g1rs, DirtyCardQueue* into_cset_dcq);
188 188
189 // Set up for parallel processing of the cards in the hot cache 189 // Set up for parallel processing of the cards in the hot cache
190 void clear_hot_cache_claimed_index() { 190 void clear_hot_cache_claimed_index() {
191 _hot_cache_par_claimed_idx = 0; 191 _hot_cache_par_claimed_idx = 0;
192 } 192 }