Mercurial > hg > graal-compiler
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 }; |