comparison src/share/vm/memory/cardTableRS.hpp @ 5939:c7a555a9449a

7068625: Testing 8 bytes of card table entries at a time speeds up card-scanning Summary: Check clean words instead of clean bytes Reviewed-by: jcoomes, jmasa, jwilhelm, ysr Contributed-by: alexey.ragozin@gmail.com
author brutisso
date Wed, 14 Mar 2012 12:49:27 +0100
parents fc2b798ab316
children da91efe96a93
comparison
equal deleted inserted replaced
5938:2c0751569716 5939:c7a555a9449a
1 /* 1 /*
2 * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2001, 2012, 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.
41 friend class VerifyCTSpaceClosure; 41 friend class VerifyCTSpaceClosure;
42 friend class ClearNoncleanCardWrapper; 42 friend class ClearNoncleanCardWrapper;
43 43
44 static jbyte clean_card_val() { 44 static jbyte clean_card_val() {
45 return CardTableModRefBS::clean_card; 45 return CardTableModRefBS::clean_card;
46 }
47
48 static intptr_t clean_card_row() {
49 return CardTableModRefBS::clean_card_row;
46 } 50 }
47 51
48 static bool 52 static bool
49 card_is_dirty_wrt_gen_iter(jbyte cv) { 53 card_is_dirty_wrt_gen_iter(jbyte cv) {
50 return CardTableModRefBS::card_is_dirty_wrt_gen_iter(cv); 54 return CardTableModRefBS::card_is_dirty_wrt_gen_iter(cv);
174 // processed. 178 // processed.
175 inline bool clear_card(jbyte* entry); 179 inline bool clear_card(jbyte* entry);
176 // Work methods called by the clear_card() 180 // Work methods called by the clear_card()
177 inline bool clear_card_serial(jbyte* entry); 181 inline bool clear_card_serial(jbyte* entry);
178 inline bool clear_card_parallel(jbyte* entry); 182 inline bool clear_card_parallel(jbyte* entry);
183 // check alignment of pointer
184 bool is_word_aligned(jbyte* entry);
179 185
180 public: 186 public:
181 ClearNoncleanCardWrapper(DirtyCardToOopClosure* dirty_card_closure, CardTableRS* ct); 187 ClearNoncleanCardWrapper(DirtyCardToOopClosure* dirty_card_closure, CardTableRS* ct);
182 void do_MemRegion(MemRegion mr); 188 void do_MemRegion(MemRegion mr);
183 }; 189 };