--- old/src/share/vm/gc/g1/heapRegion.hpp 2015-08-19 10:56:18.072973957 +0200 +++ new/src/share/vm/gc/g1/heapRegion.hpp 2015-08-19 10:56:17.992971602 +0200 @@ -109,7 +109,7 @@ // evacuation pauses between two cleanups, which is _highly_ unlikely. class G1OffsetTableContigSpace: public CompactibleSpace { friend class VMStructs; - HeapWord* _top; + HeapWord* volatile _top; HeapWord* volatile _scan_top; protected: G1BlockOffsetArrayContigSpace _offsets; @@ -134,7 +134,7 @@ // Reset the G1OffsetTableContigSpace. virtual void initialize(MemRegion mr, bool clear_space, bool mangle_space); - HeapWord** top_addr() { return &_top; } + HeapWord* volatile* top_addr() { return &_top; } // Try to allocate at least min_word_size and up to desired_size from this Space. // Returns NULL if not possible, otherwise sets actual_word_size to the amount of // space allocated.