Sat, 06 Jul 2019 19:18:57 +0100
Merge
1.1 --- a/.hgtags Tue Feb 19 08:58:55 2019 +0100 1.2 +++ b/.hgtags Sat Jul 06 19:18:57 2019 +0100 1.3 @@ -1268,3 +1268,5 @@ 1.4 d690709cc3398f8cfd6ffebb89a229105fb3e69a jdk8u222-b04 1.5 1ec20e8a3d8a7a29e9113b14567abec9f0240e9d jdk8u222-b05 1.6 17778f8991c83d794897f05210dce2d2a7b4eb2d jdk8u222-b06 1.7 +75f4e02f1113bc353fc60df7330dd5456efc49a3 jdk8u222-b07 1.8 +36a743eee6721b423b7c21a3ba28ac8d906a5386 jdk8u222-b08
2.1 --- a/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp Tue Feb 19 08:58:55 2019 +0100 2.2 +++ b/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp Sat Jul 06 19:18:57 2019 +0100 2.3 @@ -447,8 +447,6 @@ 2.4 } 2.5 2.6 HeapWord* G1BlockOffsetArrayContigSpace::initialize_threshold_raw() { 2.7 - assert(!Universe::heap()->is_in_reserved(_array->_offset_array), 2.8 - "just checking"); 2.9 _next_offset_index = _array->index_for_raw(_bottom); 2.10 _next_offset_index++; 2.11 _next_offset_threshold = 2.12 @@ -457,8 +455,6 @@ 2.13 } 2.14 2.15 void G1BlockOffsetArrayContigSpace::zero_bottom_entry_raw() { 2.16 - assert(!Universe::heap()->is_in_reserved(_array->_offset_array), 2.17 - "just checking"); 2.18 size_t bottom_index = _array->index_for_raw(_bottom); 2.19 assert(_array->address_for_index_raw(bottom_index) == _bottom, 2.20 "Precondition of call"); 2.21 @@ -466,8 +462,6 @@ 2.22 } 2.23 2.24 HeapWord* G1BlockOffsetArrayContigSpace::initialize_threshold() { 2.25 - assert(!Universe::heap()->is_in_reserved(_array->_offset_array), 2.26 - "just checking"); 2.27 _next_offset_index = _array->index_for(_bottom); 2.28 _next_offset_index++; 2.29 _next_offset_threshold =
3.1 --- a/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.hpp Tue Feb 19 08:58:55 2019 +0100 3.2 +++ b/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.hpp Sat Jul 06 19:18:57 2019 +0100 3.3 @@ -145,7 +145,7 @@ 3.4 3.5 // Array for keeping offsets for retrieving object start fast given an 3.6 // address. 3.7 - u_char* _offset_array; // byte array keeping backwards offsets 3.8 + volatile u_char* _offset_array; // byte array keeping backwards offsets 3.9 3.10 void check_offset(size_t offset, const char* msg) const { 3.11 assert(offset <= N_words, 3.12 @@ -158,9 +158,7 @@ 3.13 // For performance these have to devolve to array accesses in product builds. 3.14 inline u_char offset_array(size_t index) const; 3.15 3.16 - void set_offset_array_raw(size_t index, u_char offset) { 3.17 - _offset_array[index] = offset; 3.18 - } 3.19 + inline void set_offset_array_raw(size_t index, u_char offset); 3.20 3.21 inline void set_offset_array(size_t index, u_char offset); 3.22
4.1 --- a/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp Tue Feb 19 08:58:55 2019 +0100 4.2 +++ b/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp Sat Jul 06 19:18:57 2019 +0100 4.3 @@ -63,6 +63,10 @@ 4.4 return _offset_array[index]; 4.5 } 4.6 4.7 +inline void G1BlockOffsetSharedArray::set_offset_array_raw(size_t index, u_char offset) { 4.8 + _offset_array[index] = offset; 4.9 +} 4.10 + 4.11 void G1BlockOffsetSharedArray::set_offset_array(size_t index, u_char offset) { 4.12 check_index(index, "index out of range"); 4.13 set_offset_array_raw(index, offset); 4.14 @@ -81,7 +85,7 @@ 4.15 assert(left <= right, "indexes out of order"); 4.16 size_t num_cards = right - left + 1; 4.17 if (UseMemSetInBOT) { 4.18 - memset(&_offset_array[left], offset, num_cards); 4.19 + memset(const_cast<u_char*> (&_offset_array[left]), offset, num_cards); 4.20 } else { 4.21 size_t i = left; 4.22 const size_t end = i + num_cards;