mirror of
https://github.com/openjdk/jdk.git
synced 2026-07-19 07:29:08 +00:00
8223446: Shenandoah breaks alignment with some HumongousThreshold values
Reviewed-by: rkennke
This commit is contained in:
parent
6eb638318a
commit
c222e1aad0
@ -619,6 +619,7 @@ void ShenandoahHeapRegion::setup_sizes(size_t initial_heap_size, size_t max_heap
|
||||
|
||||
guarantee(HumongousThresholdWords == 0, "we should only set it once");
|
||||
HumongousThresholdWords = RegionSizeWords * ShenandoahHumongousThreshold / 100;
|
||||
HumongousThresholdWords = align_down(HumongousThresholdWords, MinObjAlignment);
|
||||
assert (HumongousThresholdWords <= RegionSizeWords, "sanity");
|
||||
|
||||
guarantee(HumongousThresholdBytes == 0, "we should only set it once");
|
||||
@ -643,12 +644,13 @@ void ShenandoahHeapRegion::setup_sizes(size_t initial_heap_size, size_t max_heap
|
||||
//
|
||||
// The whole thing is mitigated if Elastic TLABs are enabled.
|
||||
//
|
||||
guarantee(MaxTLABSizeBytes == 0, "we should only set it once");
|
||||
MaxTLABSizeBytes = MIN2(ShenandoahElasticTLAB ? RegionSizeBytes : (RegionSizeBytes / 8), HumongousThresholdBytes);
|
||||
assert (MaxTLABSizeBytes > MinTLABSize, "should be larger");
|
||||
|
||||
guarantee(MaxTLABSizeWords == 0, "we should only set it once");
|
||||
MaxTLABSizeWords = MaxTLABSizeBytes / HeapWordSize;
|
||||
MaxTLABSizeWords = MIN2(ShenandoahElasticTLAB ? RegionSizeWords : (RegionSizeWords / 8), HumongousThresholdWords);
|
||||
MaxTLABSizeWords = align_down(MaxTLABSizeWords, MinObjAlignment);
|
||||
|
||||
guarantee(MaxTLABSizeBytes == 0, "we should only set it once");
|
||||
MaxTLABSizeBytes = MaxTLABSizeWords * HeapWordSize;
|
||||
assert (MaxTLABSizeBytes > MinTLABSize, "should be larger");
|
||||
|
||||
log_info(gc, init)("Regions: " SIZE_FORMAT " x " SIZE_FORMAT "%s",
|
||||
RegionCount, byte_size_in_proper_unit(RegionSizeBytes), proper_unit_for_byte_size(RegionSizeBytes));
|
||||
|
||||
@ -32,6 +32,8 @@
|
||||
HeapWord* ShenandoahHeapRegion::allocate(size_t size, ShenandoahAllocRequest::Type type) {
|
||||
_heap->assert_heaplock_or_safepoint();
|
||||
|
||||
assert(is_object_aligned(size), "alloc size breaks alignment: " SIZE_FORMAT, size);
|
||||
|
||||
HeapWord* obj = top();
|
||||
if (pointer_delta(end(), obj) >= size) {
|
||||
make_regular_allocation();
|
||||
@ -39,7 +41,9 @@ HeapWord* ShenandoahHeapRegion::allocate(size_t size, ShenandoahAllocRequest::Ty
|
||||
|
||||
HeapWord* new_top = obj + size;
|
||||
set_top(new_top);
|
||||
assert(is_aligned(obj) && is_aligned(new_top), "checking alignment");
|
||||
|
||||
assert(is_object_aligned(new_top), "new top breaks alignment: " PTR_FORMAT, p2i(new_top));
|
||||
assert(is_object_aligned(obj), "obj is not aligned: " PTR_FORMAT, p2i(obj));
|
||||
|
||||
return obj;
|
||||
} else {
|
||||
|
||||
@ -26,13 +26,76 @@
|
||||
* @key gc
|
||||
* @requires vm.gc.Shenandoah
|
||||
*
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -XX:+ShenandoahVerify TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -XX:ShenandoahHumongousThreshold=50 -XX:+ShenandoahVerify TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -XX:ShenandoahHumongousThreshold=90 -XX:+ShenandoahVerify TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -XX:ShenandoahHumongousThreshold=99 -XX:+ShenandoahVerify TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -XX:ShenandoahHumongousThreshold=100 -XX:+ShenandoahVerify TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:+ShenandoahVerify
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=50
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=90
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=99
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=100
|
||||
* TestHumongousThreshold
|
||||
*
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g -XX:ShenandoahHumongousThreshold=90 -XX:ShenandoahGCHeuristics=aggressive TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:-UseTLAB -XX:+ShenandoahVerify
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:-UseTLAB -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=50
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:-UseTLAB -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=90
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:-UseTLAB -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=99
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:-UseTLAB -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=100
|
||||
* TestHumongousThreshold
|
||||
*
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:ObjectAlignmentInBytes=16 -XX:+ShenandoahVerify
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:ObjectAlignmentInBytes=16 -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=50
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:ObjectAlignmentInBytes=16 -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=90
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:ObjectAlignmentInBytes=16 -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=99
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:ObjectAlignmentInBytes=16 -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=100
|
||||
* TestHumongousThreshold
|
||||
*
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:-UseTLAB -XX:ObjectAlignmentInBytes=16 -XX:+ShenandoahVerify
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:-UseTLAB -XX:ObjectAlignmentInBytes=16 -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=50
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:-UseTLAB -XX:ObjectAlignmentInBytes=16 -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=90
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:-UseTLAB -XX:ObjectAlignmentInBytes=16 -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=99
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:-UseTLAB -XX:ObjectAlignmentInBytes=16 -XX:+ShenandoahVerify -XX:ShenandoahHumongousThreshold=100
|
||||
* TestHumongousThreshold
|
||||
*
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:ShenandoahHumongousThreshold=90 -XX:ShenandoahGCHeuristics=aggressive
|
||||
* TestHumongousThreshold
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -Xmx1g
|
||||
* -XX:-UseTLAB -XX:ShenandoahHumongousThreshold=90 -XX:ShenandoahGCHeuristics=aggressive
|
||||
* TestHumongousThreshold
|
||||
*/
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user