8166207: Use of Copy::conjoint_oops_atomic in global mark stack causes crashes on arm64
Summary: Use Copy::conjoint_memory_atomic() instead.
Reviewed-by: kbarrett
--- a/hotspot/src/share/vm/gc/g1/g1ConcurrentMark.cpp Mon Sep 19 17:35:25 2016 +0000
+++ b/hotspot/src/share/vm/gc/g1/g1ConcurrentMark.cpp Mon Sep 19 22:55:26 2016 +0200
@@ -285,7 +285,7 @@
return false;
}
- Copy::conjoint_oops_atomic(ptr_arr, new_chunk->data, OopsPerChunk);
+ Copy::conjoint_memory_atomic(ptr_arr, new_chunk->data, OopsPerChunk * sizeof(oop));
add_chunk_to_chunk_list(new_chunk);
@@ -299,7 +299,7 @@
return false;
}
- Copy::conjoint_oops_atomic(cur->data, ptr_arr, OopsPerChunk);
+ Copy::conjoint_memory_atomic(cur->data, ptr_arr, OopsPerChunk * sizeof(oop));
add_chunk_to_free_list(cur);
return true;