--- old/src/share/vm/gc/g1/g1SATBCardTableModRefBS.cpp 2016-04-06 17:17:23.378383655 +0200 +++ new/src/share/vm/gc/g1/g1SATBCardTableModRefBS.cpp 2016-04-06 17:17:23.278383654 +0200 @@ -102,10 +102,10 @@ } void G1SATBCardTableModRefBS::g1_mark_as_young(const MemRegion& mr) { - jbyte *const first = byte_for(mr.start()); - jbyte *const last = byte_after(mr.last()); + volatile jbyte *const first = byte_for(mr.start()); + volatile jbyte *const last = byte_after(mr.last()); - memset_with_concurrent_readers(first, g1_young_gen, last - first); + memset_with_concurrent_readers((jbyte*)first, g1_young_gen, last - first); } #ifndef PRODUCT @@ -143,15 +143,15 @@ _cur_covered_regions = 1; _covered[0] = _whole_heap; - _byte_map = (jbyte*) mapper->reserved().start(); + _byte_map = (volatile jbyte*) mapper->reserved().start(); byte_map_base = _byte_map - (uintptr_t(low_bound) >> card_shift); assert(byte_for(low_bound) == &_byte_map[0], "Checking start of map"); assert(byte_for(high_bound-1) <= &_byte_map[_last_valid_index], "Checking end of map"); log_trace(gc, barrier)("G1SATBCardTableModRefBS::G1SATBCardTableModRefBS: "); log_trace(gc, barrier)(" &_byte_map[0]: " INTPTR_FORMAT " &_byte_map[_last_valid_index]: " INTPTR_FORMAT, - p2i(&_byte_map[0]), p2i(&_byte_map[_last_valid_index])); - log_trace(gc, barrier)(" byte_map_base: " INTPTR_FORMAT, p2i(byte_map_base)); + p2i((jbyte*)&_byte_map[0]), p2i((jbyte*)&_byte_map[_last_valid_index])); + log_trace(gc, barrier)(" byte_map_base: " INTPTR_FORMAT, p2i((jbyte*)byte_map_base)); } void @@ -180,7 +180,7 @@ void G1SATBCardTableLoggingModRefBS::invalidate(MemRegion mr, bool whole_heap) { volatile jbyte* byte = byte_for(mr.start()); - jbyte* last_byte = byte_for(mr.last()); + volatile jbyte* last_byte = byte_for(mr.last()); Thread* thr = Thread::current(); if (whole_heap) { while (byte <= last_byte) {