Mercurial > hg > graal-jvmci-8
comparison src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp @ 18041:52b4284cb496
Merge with jdk8u20-b26
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 15 Oct 2014 16:02:50 +0200 |
parents | 4ca6dc0799b6 6a0ad2977919 |
children | 7848fc12602b |
comparison
equal
deleted
inserted
replaced
17606:45d7b2c7029d | 18041:52b4284cb496 |
---|---|
93 | 93 |
94 void G1SATBCardTableModRefBS::g1_mark_as_young(const MemRegion& mr) { | 94 void G1SATBCardTableModRefBS::g1_mark_as_young(const MemRegion& mr) { |
95 jbyte *const first = byte_for(mr.start()); | 95 jbyte *const first = byte_for(mr.start()); |
96 jbyte *const last = byte_after(mr.last()); | 96 jbyte *const last = byte_after(mr.last()); |
97 | 97 |
98 memset(first, g1_young_gen, last - first); | 98 // Below we may use an explicit loop instead of memset() because on |
99 // certain platforms memset() can give concurrent readers phantom zeros. | |
100 if (UseMemSetInBOT) { | |
101 memset(first, g1_young_gen, last - first); | |
102 } else { | |
103 for (jbyte* i = first; i < last; i++) { | |
104 *i = g1_young_gen; | |
105 } | |
106 } | |
99 } | 107 } |
100 | 108 |
101 #ifndef PRODUCT | 109 #ifndef PRODUCT |
102 void G1SATBCardTableModRefBS::verify_g1_young_region(MemRegion mr) { | 110 void G1SATBCardTableModRefBS::verify_g1_young_region(MemRegion mr) { |
103 verify_region(mr, g1_young_gen, true); | 111 verify_region(mr, g1_young_gen, true); |
113 _kind = G1SATBCTLogging; | 121 _kind = G1SATBCTLogging; |
114 } | 122 } |
115 | 123 |
116 void | 124 void |
117 G1SATBCardTableLoggingModRefBS::write_ref_field_work(void* field, | 125 G1SATBCardTableLoggingModRefBS::write_ref_field_work(void* field, |
118 oop new_val) { | 126 oop new_val, |
127 bool release) { | |
119 volatile jbyte* byte = byte_for(field); | 128 volatile jbyte* byte = byte_for(field); |
120 if (*byte == g1_young_gen) { | 129 if (*byte == g1_young_gen) { |
121 return; | 130 return; |
122 } | 131 } |
123 OrderAccess::storeload(); | 132 OrderAccess::storeload(); |