8081382: Make flags ParallelGCThreads and ConcGCThreads of type uint
Reviewed-by: drwhite, stefank
--- a/hotspot/src/share/vm/gc/cms/concurrentMarkSweepGeneration.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/cms/concurrentMarkSweepGeneration.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -285,9 +285,9 @@
_ref_processor =
new ReferenceProcessor(_span, // span
(ParallelGCThreads > 1) && ParallelRefProcEnabled, // mt processing
- (int) ParallelGCThreads, // mt processing degree
+ ParallelGCThreads, // mt processing degree
_cmsGen->refs_discovery_is_mt(), // mt discovery
- (int) MAX2(ConcGCThreads, ParallelGCThreads), // mt discovery degree
+ MAX2(ConcGCThreads, ParallelGCThreads), // mt discovery degree
_cmsGen->refs_discovery_is_atomic(), // discovery is not atomic
&_is_alive_closure); // closure for liveness info
// Initialize the _ref_processor field of CMSGen
@@ -562,7 +562,7 @@
// are not shared with parallel scavenge (ParNew).
{
uint i;
- uint num_queues = (uint) MAX2(ParallelGCThreads, ConcGCThreads);
+ uint num_queues = MAX2(ParallelGCThreads, ConcGCThreads);
if ((CMSParallelRemarkEnabled || CMSConcurrentMTEnabled
|| ParallelRefProcEnabled)
@@ -5322,8 +5322,8 @@
_bit_map(bit_map),
_work_queue(work_queue),
_mark_and_push(collector, span, bit_map, work_queue),
- _low_water_mark(MIN2((uint)(work_queue->max_elems()/4),
- (uint)(CMSWorkQueueDrainThreshold * ParallelGCThreads)))
+ _low_water_mark(MIN2((work_queue->max_elems()/4),
+ ((uint)CMSWorkQueueDrainThreshold * ParallelGCThreads)))
{ }
// . see if we can share work_queues with ParNew? XXX
@@ -6251,8 +6251,8 @@
_span(span),
_bit_map(bit_map),
_work_queue(work_queue),
- _low_water_mark(MIN2((uint)(work_queue->max_elems()/4),
- (uint)(CMSWorkQueueDrainThreshold * ParallelGCThreads))),
+ _low_water_mark(MIN2((work_queue->max_elems()/4),
+ ((uint)CMSWorkQueueDrainThreshold * ParallelGCThreads))),
_par_pushAndMarkClosure(collector, span, rp, bit_map, work_queue)
{
_ref_processor = rp;
--- a/hotspot/src/share/vm/gc/cms/parCardTableModRefBS.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/cms/parCardTableModRefBS.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -42,7 +42,7 @@
uint n_threads) {
assert(n_threads > 0, "expected n_threads > 0");
assert(n_threads <= ParallelGCThreads,
- err_msg("n_threads: %u > ParallelGCThreads: " UINTX_FORMAT, n_threads, ParallelGCThreads));
+ err_msg("n_threads: %u > ParallelGCThreads: %u", n_threads, ParallelGCThreads));
// Make sure the LNC array is valid for the space.
jbyte** lowest_non_clean;
--- a/hotspot/src/share/vm/gc/cms/parNewGeneration.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/cms/parNewGeneration.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -1349,7 +1349,7 @@
oop prefix = cast_to_oop(Atomic::xchg_ptr(BUSY, &_overflow_list));
// Trim off a prefix of at most objsFromOverflow items
Thread* tid = Thread::current();
- size_t spin_count = (size_t)ParallelGCThreads;
+ size_t spin_count = ParallelGCThreads;
size_t sleep_time_millis = MAX2((size_t)1, objsFromOverflow/100);
for (size_t spin = 0; prefix == BUSY && spin < spin_count; spin++) {
// someone grabbed it before we did ...
@@ -1466,9 +1466,9 @@
_ref_processor =
new ReferenceProcessor(_reserved, // span
ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing
- (uint) ParallelGCThreads, // mt processing degree
+ ParallelGCThreads, // mt processing degree
refs_discovery_is_mt(), // mt discovery
- (uint) ParallelGCThreads, // mt discovery degree
+ ParallelGCThreads, // mt discovery degree
refs_discovery_is_atomic(), // atomic_discovery
NULL); // is_alive_non_header
}
--- a/hotspot/src/share/vm/gc/g1/concurrentMark.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/g1/concurrentMark.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -518,7 +518,7 @@
_markStack(this),
// _finger set in set_non_marking_state
- _max_worker_id((uint)ParallelGCThreads),
+ _max_worker_id(ParallelGCThreads),
// _active_tasks set in set_non_marking_state
// _tasks set inside the constructor
_task_queues(new CMTaskQueueSet((int) _max_worker_id)),
@@ -579,8 +579,8 @@
_root_regions.init(_g1h, this);
if (ConcGCThreads > ParallelGCThreads) {
- warning("Can't have more ConcGCThreads (" UINTX_FORMAT ") "
- "than ParallelGCThreads (" UINTX_FORMAT ").",
+ warning("Can't have more ConcGCThreads (%u) "
+ "than ParallelGCThreads (%u).",
ConcGCThreads, ParallelGCThreads);
return;
}
@@ -604,20 +604,20 @@
double sleep_factor =
(1.0 - marking_task_overhead) / marking_task_overhead;
- FLAG_SET_ERGO(uintx, ConcGCThreads, (uint) marking_thread_num);
+ FLAG_SET_ERGO(uint, ConcGCThreads, (uint) marking_thread_num);
_sleep_factor = sleep_factor;
_marking_task_overhead = marking_task_overhead;
} else {
// Calculate the number of parallel marking threads by scaling
// the number of parallel GC threads.
- uint marking_thread_num = scale_parallel_threads((uint) ParallelGCThreads);
- FLAG_SET_ERGO(uintx, ConcGCThreads, marking_thread_num);
+ uint marking_thread_num = scale_parallel_threads(ParallelGCThreads);
+ FLAG_SET_ERGO(uint, ConcGCThreads, marking_thread_num);
_sleep_factor = 0.0;
_marking_task_overhead = 1.0;
}
assert(ConcGCThreads > 0, "Should have been set");
- _parallel_marking_threads = (uint) ConcGCThreads;
+ _parallel_marking_threads = ConcGCThreads;
_max_parallel_marking_threads = _parallel_marking_threads;
if (parallel_marking_threads() > 1) {
--- a/hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -1752,7 +1752,7 @@
_allocator = G1Allocator::create_allocator(this);
_humongous_object_threshold_in_words = HeapRegion::GrainWords / 2;
- int n_queues = (int)ParallelGCThreads;
+ uint n_queues = ParallelGCThreads;
_task_queues = new RefToScanQueueSet(n_queues);
uint n_rem_sets = HeapRegionRemSet::num_par_rem_sets();
@@ -1762,7 +1762,7 @@
_worker_cset_start_region_time_stamp = NEW_C_HEAP_ARRAY(uint, n_queues, mtGC);
_evacuation_failed_info_array = NEW_C_HEAP_ARRAY(EvacuationFailedInfo, n_queues, mtGC);
- for (int i = 0; i < n_queues; i++) {
+ for (uint i = 0; i < n_queues; i++) {
RefToScanQueue* q = new RefToScanQueue();
q->initialize();
_task_queues->register_queue(i, q);
@@ -2064,11 +2064,11 @@
new ReferenceProcessor(mr, // span
ParallelRefProcEnabled && (ParallelGCThreads > 1),
// mt processing
- (uint) ParallelGCThreads,
+ ParallelGCThreads,
// degree of mt processing
(ParallelGCThreads > 1) || (ConcGCThreads > 1),
// mt discovery
- (uint) MAX2(ParallelGCThreads, ConcGCThreads),
+ MAX2(ParallelGCThreads, ConcGCThreads),
// degree of mt discovery
false,
// Reference discovery is not atomic
@@ -2081,11 +2081,11 @@
new ReferenceProcessor(mr, // span
ParallelRefProcEnabled && (ParallelGCThreads > 1),
// mt processing
- (uint) ParallelGCThreads,
+ ParallelGCThreads,
// degree of mt processing
(ParallelGCThreads > 1),
// mt discovery
- (uint) ParallelGCThreads,
+ ParallelGCThreads,
// degree of mt discovery
true,
// Reference discovery is atomic
--- a/hotspot/src/share/vm/gc/g1/g1OopClosures.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/g1/g1OopClosures.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -51,7 +51,7 @@
_worker_id = par_scan_state->queue_num();
assert(_worker_id < ParallelGCThreads,
- err_msg("The given worker id %u must be less than the number of threads " UINTX_FORMAT, _worker_id, ParallelGCThreads));
+ err_msg("The given worker id %u must be less than the number of threads %u", _worker_id, ParallelGCThreads));
}
// Generate G1 specialized oop_oop_iterate functions.
--- a/hotspot/src/share/vm/gc/g1/heapRegionRemSet.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/g1/heapRegionRemSet.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -817,7 +817,7 @@
// This can be done by either mutator threads together with the
// concurrent refinement threads or GC threads.
uint HeapRegionRemSet::num_par_rem_sets() {
- return MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), (uint)ParallelGCThreads);
+ return MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads);
}
HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa,
--- a/hotspot/src/share/vm/gc/parallel/gcTaskManager.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/parallel/gcTaskManager.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -484,12 +484,12 @@
assert(!all_workers_active() || active_workers() == ParallelGCThreads,
err_msg("all_workers_active() is incorrect: "
- "active %d ParallelGCThreads " UINTX_FORMAT, active_workers(),
+ "active %d ParallelGCThreads %u", active_workers(),
ParallelGCThreads));
if (TraceDynamicGCThreads) {
gclog_or_tty->print_cr("GCTaskManager::set_active_gang(): "
"all_workers_active() %d workers %d "
- "active %d ParallelGCThreads " UINTX_FORMAT,
+ "active %d ParallelGCThreads %u",
all_workers_active(), workers(), active_workers(),
ParallelGCThreads);
}
--- a/hotspot/src/share/vm/gc/parallel/pcTasks.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/parallel/pcTasks.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -255,7 +255,7 @@
which_stack_index = which;
assert(manager->active_workers() == ParallelGCThreads,
err_msg("all_workers_active has been incorrectly set: "
- " active %d ParallelGCThreads " UINTX_FORMAT, manager->active_workers(),
+ " active %d ParallelGCThreads %u", manager->active_workers(),
ParallelGCThreads));
} else {
which_stack_index = ParCompactionManager::pop_recycled_stack_index();
@@ -334,7 +334,7 @@
which_stack_index = which;
assert(manager->active_workers() == ParallelGCThreads,
err_msg("all_workers_active has been incorrectly set: "
- " active %d ParallelGCThreads " UINTX_FORMAT, manager->active_workers(),
+ " active %d ParallelGCThreads %u", manager->active_workers(),
ParallelGCThreads));
} else {
which_stack_index = stack_index();
--- a/hotspot/src/share/vm/gc/parallel/psCompactionManager.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/parallel/psCompactionManager.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -170,8 +170,8 @@
}
ParCompactionManager*
-ParCompactionManager::gc_thread_compaction_manager(int index) {
- assert(index >= 0 && index < (int)ParallelGCThreads, "index out of range");
+ParCompactionManager::gc_thread_compaction_manager(uint index) {
+ assert(index < ParallelGCThreads, "index out of range");
assert(_manager_array != NULL, "Sanity");
return _manager_array[index];
}
--- a/hotspot/src/share/vm/gc/parallel/psCompactionManager.hpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/parallel/psCompactionManager.hpp Fri Jun 05 09:50:09 2015 +0200
@@ -133,7 +133,7 @@
RegionTaskQueue* region_stack() { return _region_stack; }
void set_region_stack(RegionTaskQueue* v) { _region_stack = v; }
- inline static ParCompactionManager* manager_array(int index);
+ inline static ParCompactionManager* manager_array(uint index);
inline static RegionTaskQueue* region_list(int index) {
return _region_list[index];
@@ -177,7 +177,7 @@
void follow_class_loader(ClassLoaderData* klass);
// Access function for compaction managers
- static ParCompactionManager* gc_thread_compaction_manager(int index);
+ static ParCompactionManager* gc_thread_compaction_manager(uint index);
static bool steal(int queue_num, int* seed, oop& t);
static bool steal_objarray(int queue_num, int* seed, ObjArrayTask& t);
@@ -229,10 +229,9 @@
};
};
-inline ParCompactionManager* ParCompactionManager::manager_array(int index) {
+inline ParCompactionManager* ParCompactionManager::manager_array(uint index) {
assert(_manager_array != NULL, "access of NULL manager_array");
- assert(index >= 0 && index <= (int)ParallelGCThreads,
- "out of range manager_array access");
+ assert(index <= ParallelGCThreads, "out of range manager_array access");
return _manager_array[index];
}
--- a/hotspot/src/share/vm/gc/parallel/psParallelCompact.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/parallel/psParallelCompact.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -832,10 +832,10 @@
_ref_processor =
new ReferenceProcessor(mr, // span
ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing
- (uint) ParallelGCThreads, // mt processing degree
- true, // mt discovery
- (uint) ParallelGCThreads, // mt discovery degree
- true, // atomic_discovery
+ ParallelGCThreads, // mt processing degree
+ true, // mt discovery
+ ParallelGCThreads, // mt discovery degree
+ true, // atomic_discovery
&_is_alive_closure); // non-header is alive closure
_counters = new CollectorCounters("PSParallelCompact", 1);
--- a/hotspot/src/share/vm/gc/parallel/psPromotionManager.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/parallel/psPromotionManager.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -75,8 +75,8 @@
return PSScavenge::should_scavenge(p, check_to_space);
}
-PSPromotionManager* PSPromotionManager::gc_thread_promotion_manager(int index) {
- assert(index >= 0 && index < (int)ParallelGCThreads, "index out of range");
+PSPromotionManager* PSPromotionManager::gc_thread_promotion_manager(uint index) {
+ assert(index < ParallelGCThreads, "index out of range");
assert(_manager_array != NULL, "Sanity");
return &_manager_array[index];
}
--- a/hotspot/src/share/vm/gc/parallel/psPromotionManager.hpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/parallel/psPromotionManager.hpp Fri Jun 05 09:50:09 2015 +0200
@@ -90,7 +90,7 @@
static PSOldGen* old_gen() { return _old_gen; }
static MutableSpace* young_space() { return _young_space; }
- inline static PSPromotionManager* manager_array(int index);
+ inline static PSPromotionManager* manager_array(uint index);
template <class T> inline void claim_or_forward_internal_depth(T* p);
// On the task queues we push reference locations as well as
@@ -154,7 +154,7 @@
static void pre_scavenge();
static bool post_scavenge(YoungGCTracer& gc_tracer);
- static PSPromotionManager* gc_thread_promotion_manager(int index);
+ static PSPromotionManager* gc_thread_promotion_manager(uint index);
static PSPromotionManager* vm_thread_promotion_manager();
static bool steal_depth(int queue_num, int* seed, StarTask& t);
--- a/hotspot/src/share/vm/gc/parallel/psPromotionManager.inline.hpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/parallel/psPromotionManager.inline.hpp Fri Jun 05 09:50:09 2015 +0200
@@ -33,9 +33,9 @@
#include "gc/shared/taskqueue.inline.hpp"
#include "oops/oop.inline.hpp"
-inline PSPromotionManager* PSPromotionManager::manager_array(int index) {
+inline PSPromotionManager* PSPromotionManager::manager_array(uint index) {
assert(_manager_array != NULL, "access of NULL manager_array");
- assert(index >= 0 && index <= (int)ParallelGCThreads, "out of range manager_array access");
+ assert(index <= ParallelGCThreads, "out of range manager_array access");
return &_manager_array[index];
}
--- a/hotspot/src/share/vm/gc/parallel/psScavenge.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/gc/parallel/psScavenge.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -845,9 +845,9 @@
_ref_processor =
new ReferenceProcessor(mr, // span
ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing
- (uint) ParallelGCThreads, // mt processing degree
+ ParallelGCThreads, // mt processing degree
true, // mt discovery
- (uint) ParallelGCThreads, // mt discovery degree
+ ParallelGCThreads, // mt discovery degree
true, // atomic_discovery
NULL); // header provides liveness info
--- a/hotspot/src/share/vm/runtime/arguments.cpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Fri Jun 05 09:50:09 2015 +0200
@@ -1387,7 +1387,7 @@
if (PrintGCDetails && Verbose) {
tty->print_cr("MarkStackSize: %uk MarkStackSizeMax: %uk",
(unsigned int) (MarkStackSize / K), (uint) (MarkStackSizeMax / K));
- tty->print_cr("ConcGCThreads: %u", (uint) ConcGCThreads);
+ tty->print_cr("ConcGCThreads: %u", ConcGCThreads);
}
}
#endif // INCLUDE_ALL_GCS
@@ -1705,7 +1705,7 @@
if (PrintGCDetails && Verbose) {
tty->print_cr("MarkStackSize: %uk MarkStackSizeMax: %uk",
(unsigned int) (MarkStackSize / K), (uint) (MarkStackSizeMax / K));
- tty->print_cr("ConcGCThreads: %u", (uint) ConcGCThreads);
+ tty->print_cr("ConcGCThreads: %u", ConcGCThreads);
}
}
@@ -3243,7 +3243,7 @@
jio_fprintf(defaultStream::error_stream(),
"Please use -XX:ConcGCThreads in place of "
"-XX:ParallelMarkingThreads or -XX:ParallelCMSThreads in the future\n");
- FLAG_SET_CMDLINE(uintx, ConcGCThreads, conc_threads);
+ FLAG_SET_CMDLINE(uint, ConcGCThreads, conc_threads);
} else if (match_option(option, "-XX:MaxDirectMemorySize=", &tail)) {
julong max_direct_memory_size = 0;
ArgsRange errcode = parse_memory_size(tail, &max_direct_memory_size, 0);
--- a/hotspot/src/share/vm/runtime/globals.hpp Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/src/share/vm/runtime/globals.hpp Fri Jun 05 09:50:09 2015 +0200
@@ -1481,7 +1481,7 @@
"The standard deviation used by the parallel compact dead wood " \
"limiter (a number between 0-100)") \
\
- product(uintx, ParallelGCThreads, 0, \
+ product(uint, ParallelGCThreads, 0, \
"Number of parallel threads parallel gc will use") \
\
product(bool, UseDynamicNumberOfGCThreads, false, \
@@ -1506,7 +1506,7 @@
develop(uintx, ParallelOldGCSplitInterval, 3, \
"How often to provoke splitting a young gen space") \
\
- product(uintx, ConcGCThreads, 0, \
+ product(uint, ConcGCThreads, 0, \
"Number of threads concurrent gc will use") \
\
product(size_t, YoungPLABSize, 4096, \
--- a/hotspot/test/gc/arguments/TestParallelGCThreads.java Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/test/gc/arguments/TestParallelGCThreads.java Fri Jun 05 09:50:09 2015 +0200
@@ -24,7 +24,7 @@
/*
* @test TestParallelGCThreads
* @key gc
- * @bug 8059527
+ * @bug 8059527 8081382
* @summary Tests argument processing for ParallelGCThreads
* @library /testlibrary
* @modules java.base/sun.misc
@@ -37,7 +37,38 @@
public class TestParallelGCThreads {
public static void main(String args[]) throws Exception {
+ testFlags();
+ testDefaultValue();
+ }
+ private static final String flagName = "ParallelGCThreads";
+
+ // uint ParallelGCThreads = 23 {product}
+ private static final String printFlagsFinalPattern = " *uint *" + flagName + " *:?= *(\\d+) *\\{product\\} *";
+
+ public static void testDefaultValue() throws Exception {
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+ "-XX:+UnlockExperimentalVMOptions", "-XX:+PrintFlagsFinal", "-version");
+
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ String value = output.firstMatch(printFlagsFinalPattern, 1);
+
+ try {
+ Asserts.assertNotNull(value, "Couldn't find uint flag " + flagName);
+
+ Long longValue = new Long(value);
+
+ // Sanity check that we got a non-zero value.
+ Asserts.assertNotEquals(longValue, "0");
+
+ output.shouldHaveExitValue(0);
+ } catch (Exception e) {
+ System.err.println(output.getOutput());
+ throw e;
+ }
+ }
+
+ public static void testFlags() throws Exception {
// For each parallel collector (G1, Parallel, ParNew/CMS)
for (String gc : new String[] {"G1", "Parallel", "ConcMarkSweep"}) {
@@ -54,6 +85,15 @@
Asserts.assertEQ(count, i, "Specifying ParallelGCThreads=" + i + " for " + gc + "GC does not set the thread count properly!");
}
}
+
+ // 4294967295 == (unsigned int) -1
+ // So setting ParallelGCThreads=4294967295 should give back 4294967295
+ // and setting ParallelGCThreads=4294967296 should give back 0. (SerialGC is ok with ParallelGCThreads=0)
+ for (long i = 4294967295L; i <= 4294967296L; i++) {
+ String[] flags = new String[] {"-XX:+UseSerialGC", "-XX:ParallelGCThreads=" + i, "-XX:+PrintFlagsFinal", "-version"};
+ long count = getParallelGCThreadCount(flags);
+ Asserts.assertEQ(count, i % 4294967296L, "Specifying ParallelGCThreads=" + i + " does not set the thread count properly!");
+ }
}
public static long getParallelGCThreadCount(String flags[]) throws Exception {
--- a/hotspot/test/serviceability/attach/AttachSetGetFlag.java Thu Jun 04 14:29:34 2015 +0200
+++ b/hotspot/test/serviceability/attach/AttachSetGetFlag.java Fri Jun 05 09:50:09 2015 +0200
@@ -61,6 +61,9 @@
// Since it is not manageable, we can't test the setFlag functionality.
testGetFlag("ArrayAllocatorMallocLimit", "128");
// testSetFlag("ArrayAllocatorMallocLimit", "64", "128");
+
+ // Test a uint flag.
+ testGetFlag("ParallelGCThreads", "10");
}
public static ProcessBuilder runTarget(String flagName, String flagValue) throws Exception {