344 MemRegion mr);
345
346 static int LogOfHRGrainBytes;
347 static int LogOfHRGrainWords;
348
349 static size_t GrainBytes;
350 static size_t GrainWords;
351 static size_t CardsPerRegion;
352
353 static size_t align_up_to_region_byte_size(size_t sz) {
354 return (sz + (size_t) GrainBytes - 1) &
355 ~((1 << (size_t) LogOfHRGrainBytes) - 1);
356 }
357
358 // It sets up the heap region size (GrainBytes / GrainWords), as
359 // well as other related fields that are based on the heap region
360 // size (LogOfHRGrainBytes / LogOfHRGrainWords /
361 // CardsPerRegion). All those fields are considered constant
362 // throughout the JVM's execution, therefore they should only be set
363 // up once during initialization time.
364 static void setup_heap_region_size(uintx min_heap_size);
365
366 enum ClaimValues {
367 InitialClaimValue = 0,
368 FinalCountClaimValue = 1,
369 NoteEndClaimValue = 2,
370 ScrubRemSetClaimValue = 3,
371 ParVerifyClaimValue = 4,
372 RebuildRSClaimValue = 5,
373 ParEvacFailureClaimValue = 6,
374 AggregateCountClaimValue = 7,
375 VerifyCountClaimValue = 8,
376 ParMarkRootClaimValue = 9
377 };
378
379 inline HeapWord* par_allocate_no_bot_updates(size_t word_size) {
380 assert(is_young(), "we can only skip BOT updates on young regions");
381 return ContiguousSpace::par_allocate(word_size);
382 }
383 inline HeapWord* allocate_no_bot_updates(size_t word_size) {
384 assert(is_young(), "we can only skip BOT updates on young regions");
|
344 MemRegion mr);
345
346 static int LogOfHRGrainBytes;
347 static int LogOfHRGrainWords;
348
349 static size_t GrainBytes;
350 static size_t GrainWords;
351 static size_t CardsPerRegion;
352
353 static size_t align_up_to_region_byte_size(size_t sz) {
354 return (sz + (size_t) GrainBytes - 1) &
355 ~((1 << (size_t) LogOfHRGrainBytes) - 1);
356 }
357
358 // It sets up the heap region size (GrainBytes / GrainWords), as
359 // well as other related fields that are based on the heap region
360 // size (LogOfHRGrainBytes / LogOfHRGrainWords /
361 // CardsPerRegion). All those fields are considered constant
362 // throughout the JVM's execution, therefore they should only be set
363 // up once during initialization time.
364 static void setup_heap_region_size(size_t initial_heap_size, size_t max_heap_size);
365
366 enum ClaimValues {
367 InitialClaimValue = 0,
368 FinalCountClaimValue = 1,
369 NoteEndClaimValue = 2,
370 ScrubRemSetClaimValue = 3,
371 ParVerifyClaimValue = 4,
372 RebuildRSClaimValue = 5,
373 ParEvacFailureClaimValue = 6,
374 AggregateCountClaimValue = 7,
375 VerifyCountClaimValue = 8,
376 ParMarkRootClaimValue = 9
377 };
378
379 inline HeapWord* par_allocate_no_bot_updates(size_t word_size) {
380 assert(is_young(), "we can only skip BOT updates on young regions");
381 return ContiguousSpace::par_allocate(word_size);
382 }
383 inline HeapWord* allocate_no_bot_updates(size_t word_size) {
384 assert(is_young(), "we can only skip BOT updates on young regions");
|