--- old/src/share/vm/gc/g1/dirtyCardQueue.cpp 2016-04-06 17:17:17.290383583 +0200 +++ new/src/share/vm/gc/g1/dirtyCardQueue.cpp 2016-04-06 17:17:17.194383582 +0200 @@ -160,7 +160,7 @@ size_t limit = DirtyCardQueue::byte_index_to_index(buffer_size()); size_t i = DirtyCardQueue::byte_index_to_index(node->index()); for ( ; i < limit; ++i) { - jbyte* card_ptr = static_cast(buf[i]); + volatile jbyte* card_ptr = static_cast(buf[i]); assert(card_ptr != NULL, "invariant"); if (!cl->do_card_ptr(card_ptr, worker_i)) { result = false; // Incomplete processing.