--- old/src/share/vm/gc/parallel/cardTableExtension.hpp 2016-04-06 17:17:28.014383710 +0200 +++ new/src/share/vm/gc/parallel/cardTableExtension.hpp 2016-04-06 17:17:27.894383708 +0200 @@ -74,7 +74,7 @@ bool addr_is_marked_imprecise(void *addr); bool addr_is_marked_precise(void *addr); - void set_card_newgen(void* addr) { jbyte* p = byte_for(addr); *p = verify_card; } + void set_card_newgen(void* addr) { volatile jbyte* p = byte_for(addr); *p = verify_card; } // Testers for entries static bool card_is_dirty(int value) { return value == dirty_card; } @@ -84,7 +84,7 @@ // Card marking void inline_write_ref_field_gc(void* field, oop new_val) { - jbyte* byte = byte_for(field); + volatile jbyte* byte = byte_for(field); *byte = youngergen_card; } @@ -103,7 +103,7 @@ #ifdef ASSERT - bool is_valid_card_address(jbyte* addr) { + bool is_valid_card_address(volatile jbyte* addr) { return (addr >= _byte_map) && (addr < _byte_map + _byte_map_size); }