Skip to content

Commit 8153097

Browse files
Ravi ReddyRob McKenna
Ravi Reddy
authored and
Rob McKenna
committed
Merge
2 parents 6308078 + e1b620e commit 8153097

File tree

32 files changed

+227
-159
lines changed

32 files changed

+227
-159
lines changed

make/devkit/createJMHBundle.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ rm -f *
4343
fetchJar() {
4444
url="https://repo.maven.apache.org/maven2/$1/$2/$3/$2-$3.jar"
4545
if command -v curl > /dev/null; then
46-
curl -O --fail $url
46+
curl -OL --fail $url
4747
elif command -v wget > /dev/null; then
4848
wget $url
4949
else

src/hotspot/cpu/aarch64/gc/x/xGlobals_aarch64.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,11 @@
142142
// * 63-48 Fixed (16-bits, always zero)
143143
//
144144

145-
// Default value if probing is not implemented for a certain platform: 128TB
146-
static const size_t DEFAULT_MAX_ADDRESS_BIT = 47;
147-
// Minimum value returned, if probing fails: 64GB
145+
// Default value if probing is not implemented for a certain platform
146+
// Max address bit is restricted by implicit assumptions in the code, for instance
147+
// the bit layout of XForwardingEntry or Partial array entry (see XMarkStackEntry) in mark stack
148+
static const size_t DEFAULT_MAX_ADDRESS_BIT = 46;
149+
// Minimum value returned, if probing fails
148150
static const size_t MINIMUM_MAX_ADDRESS_BIT = 36;
149151

150152
static size_t probe_valid_max_address_bit() {

src/hotspot/cpu/aarch64/gc/z/zAddress_aarch64.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,11 @@
3636
#include <sys/mman.h>
3737
#endif // LINUX
3838

39-
// Default value if probing is not implemented for a certain platform: 128TB
40-
static const size_t DEFAULT_MAX_ADDRESS_BIT = 47;
41-
// Minimum value returned, if probing fails: 64GB
39+
// Default value if probing is not implemented for a certain platform
40+
// Max address bit is restricted by implicit assumptions in the code, for instance
41+
// the bit layout of ZForwardingEntry or Partial array entry (see ZMarkStackEntry) in mark stack
42+
static const size_t DEFAULT_MAX_ADDRESS_BIT = 46;
43+
// Minimum value returned, if probing fail
4244
static const size_t MINIMUM_MAX_ADDRESS_BIT = 36;
4345

4446
static size_t probe_valid_max_address_bit() {

src/hotspot/share/gc/shared/memAllocator.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -315,18 +315,15 @@ HeapWord* MemAllocator::mem_allocate_inside_tlab_slow(Allocation& allocation) co
315315
PTR_FORMAT " min: " SIZE_FORMAT ", desired: " SIZE_FORMAT,
316316
p2i(mem), min_tlab_size, new_tlab_size);
317317

318+
// ...and clear or zap just allocated TLAB, if needed.
318319
if (ZeroTLAB) {
319-
// ..and clear it.
320320
Copy::zero_to_words(mem, allocation._allocated_tlab_size);
321-
} else {
322-
// ...and zap just allocated object.
323-
#ifdef ASSERT
321+
} else if (ZapTLAB) {
324322
// Skip mangling the space corresponding to the object header to
325323
// ensure that the returned space is not considered parsable by
326324
// any concurrent GC thread.
327325
size_t hdr_size = oopDesc::header_size();
328326
Copy::fill_to_words(mem + hdr_size, allocation._allocated_tlab_size - hdr_size, badHeapWordVal);
329-
#endif // ASSERT
330327
}
331328

332329
tlab.fill(mem, mem + _word_size, allocation._allocated_tlab_size);

src/hotspot/share/gc/shared/threadLocalAllocBuffer.inline.hpp

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -39,14 +39,8 @@ inline HeapWord* ThreadLocalAllocBuffer::allocate(size_t size) {
3939
invariants();
4040
HeapWord* obj = top();
4141
if (pointer_delta(end(), obj) >= size) {
42-
// successful thread-local allocation
43-
#ifdef ASSERT
44-
// Skip mangling the space corresponding to the object header to
45-
// ensure that the returned space is not considered parsable by
46-
// any concurrent GC thread.
47-
size_t hdr_size = oopDesc::header_size();
48-
Copy::fill_to_words(obj + hdr_size, size - hdr_size, badHeapWordVal);
49-
#endif // ASSERT
42+
// Successful thread-local allocation.
43+
5044
// This addition is safe because we know that top is
5145
// at least size below end, so the add can't wrap.
5246
set_top(obj + size);

src/hotspot/share/gc/shenandoah/shenandoahFullGC.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -359,11 +359,13 @@ class ShenandoahPrepareForCompactionObjectClosure : public ObjectClosure {
359359
_compact_point = _to_region->bottom();
360360
}
361361

362-
// Object fits into current region, record new location:
362+
// Object fits into current region, record new location, if object does not move:
363363
assert(_compact_point + obj_size <= _to_region->end(), "must fit");
364364
shenandoah_assert_not_forwarded(nullptr, p);
365-
_preserved_marks->push_if_necessary(p, p->mark());
366-
p->forward_to(cast_to_oop(_compact_point));
365+
if (_compact_point != cast_from_oop<HeapWord*>(p)) {
366+
_preserved_marks->push_if_necessary(p, p->mark());
367+
p->forward_to(cast_to_oop(_compact_point));
368+
}
367369
_compact_point += obj_size;
368370
}
369371
};
@@ -845,6 +847,7 @@ class ShenandoahCompactObjectsClosure : public ObjectClosure {
845847
if (p->is_forwarded()) {
846848
HeapWord* compact_from = cast_from_oop<HeapWord*>(p);
847849
HeapWord* compact_to = cast_from_oop<HeapWord*>(p->forwardee());
850+
assert(compact_from != compact_to, "Forwarded object should move");
848851
Copy::aligned_conjoint_words(compact_from, compact_to, size);
849852
oop new_obj = cast_to_oop(compact_to);
850853

src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -818,18 +818,15 @@ HeapWord* ShenandoahHeap::allocate_from_gclab_slow(Thread* thread, size_t size)
818818

819819
assert (size <= actual_size, "allocation should fit");
820820

821+
// ...and clear or zap just allocated TLAB, if needed.
821822
if (ZeroTLAB) {
822-
// ..and clear it.
823823
Copy::zero_to_words(gclab_buf, actual_size);
824-
} else {
825-
// ...and zap just allocated object.
826-
#ifdef ASSERT
824+
} else if (ZapTLAB) {
827825
// Skip mangling the space corresponding to the object header to
828826
// ensure that the returned space is not considered parsable by
829827
// any concurrent GC thread.
830828
size_t hdr_size = oopDesc::header_size();
831829
Copy::fill_to_words(gclab_buf + hdr_size, actual_size - hdr_size, badHeapWordVal);
832-
#endif // ASSERT
833830
}
834831
gclab->set_buf(gclab_buf, actual_size);
835832
return gclab->allocate(size);

src/hotspot/share/gc/z/z_globals.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
\
3838
product(double, ZYoungCompactionLimit, 25.0, \
3939
"Maximum allowed garbage in young pages") \
40+
range(0, 100) \
4041
\
4142
product(double, ZCollectionIntervalMinor, -1, \
4243
"Force Minor GC at a fixed time interval (in seconds)") \

src/hotspot/share/interpreter/zero/bytecodeInterpreter.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2002, 2023, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -1991,11 +1991,9 @@ void BytecodeInterpreter::run(interpreterState istate) {
19911991
size_t obj_size = ik->size_helper();
19921992
HeapWord* result = THREAD->tlab().allocate(obj_size);
19931993
if (result != nullptr) {
1994-
// Initialize object field block:
1995-
// - if TLAB is pre-zeroed, we can skip this path
1996-
// - in debug mode, ThreadLocalAllocBuffer::allocate mangles
1997-
// this area, and we still need to initialize it
1998-
if (DEBUG_ONLY(true ||) !ZeroTLAB) {
1994+
// Initialize object field block.
1995+
if (!ZeroTLAB) {
1996+
// The TLAB was not pre-zeroed, we need to clear the memory here.
19991997
size_t hdr_size = oopDesc::header_size();
20001998
Copy::fill_to_words(result + hdr_size, obj_size - hdr_size, 0);
20011999
}

src/hotspot/share/oops/instanceKlass.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1634,16 +1634,17 @@ void InstanceKlass::call_class_initializer(TRAPS) {
16341634

16351635
void InstanceKlass::mask_for(const methodHandle& method, int bci,
16361636
InterpreterOopMap* entry_for) {
1637-
// Lazily create the _oop_map_cache at first request
1638-
// Lock-free access requires load_acquire.
1637+
// Lazily create the _oop_map_cache at first request.
1638+
// Load_acquire is needed to safely get instance published with CAS by another thread.
16391639
OopMapCache* oop_map_cache = Atomic::load_acquire(&_oop_map_cache);
16401640
if (oop_map_cache == nullptr) {
1641-
MutexLocker x(OopMapCacheAlloc_lock);
1642-
// Check if _oop_map_cache was allocated while we were waiting for this lock
1643-
if ((oop_map_cache = _oop_map_cache) == nullptr) {
1644-
oop_map_cache = new OopMapCache();
1645-
// Ensure _oop_map_cache is stable, since it is examined without a lock
1646-
Atomic::release_store(&_oop_map_cache, oop_map_cache);
1641+
// Try to install new instance atomically.
1642+
oop_map_cache = new OopMapCache();
1643+
OopMapCache* other = Atomic::cmpxchg(&_oop_map_cache, (OopMapCache*)nullptr, oop_map_cache);
1644+
if (other != nullptr) {
1645+
// Someone else managed to install before us, ditch local copy and use the existing one.
1646+
delete oop_map_cache;
1647+
oop_map_cache = other;
16471648
}
16481649
}
16491650
// _oop_map_cache is constant after init; lookup below does its own locking.

src/hotspot/share/opto/type.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4174,24 +4174,24 @@ const TypeInstPtr *TypeInstPtr::xmeet_unloaded(const TypeInstPtr *tinst, const T
41744174
//
41754175
assert(loaded->ptr() != TypePtr::Null, "insanity check");
41764176
//
4177-
if (loaded->ptr() == TypePtr::TopPTR) { return unloaded; }
4177+
if (loaded->ptr() == TypePtr::TopPTR) { return unloaded->with_speculative(speculative); }
41784178
else if (loaded->ptr() == TypePtr::AnyNull) { return make(ptr, unloaded->klass(), interfaces, false, nullptr, off, instance_id, speculative, depth); }
4179-
else if (loaded->ptr() == TypePtr::BotPTR) { return TypeInstPtr::BOTTOM; }
4179+
else if (loaded->ptr() == TypePtr::BotPTR) { return TypeInstPtr::BOTTOM->with_speculative(speculative); }
41804180
else if (loaded->ptr() == TypePtr::Constant || loaded->ptr() == TypePtr::NotNull) {
4181-
if (unloaded->ptr() == TypePtr::BotPTR) { return TypeInstPtr::BOTTOM; }
4182-
else { return TypeInstPtr::NOTNULL; }
4181+
if (unloaded->ptr() == TypePtr::BotPTR) { return TypeInstPtr::BOTTOM->with_speculative(speculative); }
4182+
else { return TypeInstPtr::NOTNULL->with_speculative(speculative); }
41834183
}
4184-
else if (unloaded->ptr() == TypePtr::TopPTR) { return unloaded; }
4184+
else if (unloaded->ptr() == TypePtr::TopPTR) { return unloaded->with_speculative(speculative); }
41854185

4186-
return unloaded->cast_to_ptr_type(TypePtr::AnyNull)->is_instptr();
4186+
return unloaded->cast_to_ptr_type(TypePtr::AnyNull)->is_instptr()->with_speculative(speculative);
41874187
}
41884188

41894189
// Both are unloaded, not the same class, not Object
41904190
// Or meet unloaded with a different loaded class, not java/lang/Object
41914191
if (ptr != TypePtr::BotPTR) {
4192-
return TypeInstPtr::NOTNULL;
4192+
return TypeInstPtr::NOTNULL->with_speculative(speculative);
41934193
}
4194-
return TypeInstPtr::BOTTOM;
4194+
return TypeInstPtr::BOTTOM->with_speculative(speculative);
41954195
}
41964196

41974197

@@ -4594,6 +4594,10 @@ const TypeInstPtr* TypeInstPtr::remove_speculative() const {
45944594
_instance_id, nullptr, _inline_depth);
45954595
}
45964596

4597+
const TypeInstPtr* TypeInstPtr::with_speculative(const TypePtr* speculative) const {
4598+
return make(_ptr, klass(), _interfaces, klass_is_exact(), const_oop(), _offset, _instance_id, speculative, _inline_depth);
4599+
}
4600+
45974601
const TypePtr* TypeInstPtr::with_inline_depth(int depth) const {
45984602
if (!UseInlineDepthForSpeculativeTypes) {
45994603
return this;

src/hotspot/share/opto/type.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,6 +1356,7 @@ class TypeInstPtr : public TypeOopPtr {
13561356

13571357
// Speculative type helper methods.
13581358
virtual const TypeInstPtr* remove_speculative() const;
1359+
const TypeInstPtr* with_speculative(const TypePtr* speculative) const;
13591360
virtual const TypePtr* with_inline_depth(int depth) const;
13601361
virtual const TypePtr* with_instance_id(int instance_id) const;
13611362

src/hotspot/share/prims/downcallLinker.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -41,7 +41,8 @@ class DowncallLinker: AllStatic {
4141
int captured_state_mask,
4242
bool needs_transition);
4343

44-
static void capture_state(int32_t* value_ptr, int captured_state_mask);
44+
// This is defined as JVM_LEAF which adds the JNICALL modifier.
45+
static void JNICALL capture_state(int32_t* value_ptr, int captured_state_mask);
4546

4647
class StubGenerator : public StubCodeGenerator {
4748
BasicType* _signature;

src/hotspot/share/runtime/globals.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,9 @@ const int ObjectAlignmentInBytes = 8;
487487
develop(bool, ZapFillerObjects, trueInDebug, \
488488
"Zap filler objects") \
489489
\
490+
develop(bool, ZapTLAB, trueInDebug, \
491+
"Zap allocated TLABs") \
492+
\
490493
product(bool, ExecutingUnitTests, false, \
491494
"Whether the JVM is running unit tests or not") \
492495
\

src/hotspot/share/runtime/mutexLocker.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ Mutex* tty_lock = nullptr;
101101
Mutex* RawMonitor_lock = nullptr;
102102
Mutex* PerfDataMemAlloc_lock = nullptr;
103103
Mutex* PerfDataManager_lock = nullptr;
104-
Mutex* OopMapCacheAlloc_lock = nullptr;
105104

106105
Mutex* FreeList_lock = nullptr;
107106
Mutex* OldSets_lock = nullptr;
@@ -349,7 +348,6 @@ void mutex_init() {
349348
MUTEX_DEFL(PSOldGenExpand_lock , PaddedMutex , Heap_lock, true);
350349
}
351350
#endif
352-
MUTEX_DEFL(OopMapCacheAlloc_lock , PaddedMutex , Threads_lock, true);
353351
MUTEX_DEFL(Module_lock , PaddedMutex , ClassLoaderDataGraph_lock);
354352
MUTEX_DEFL(SystemDictionary_lock , PaddedMonitor, Module_lock);
355353
MUTEX_DEFL(JNICritical_lock , PaddedMonitor, AdapterHandlerLibrary_lock); // used for JNI critical regions

src/hotspot/share/runtime/mutexLocker.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@ extern Mutex* FullGCALot_lock; // a lock to make FullGCALot MT
9797
extern Mutex* RawMonitor_lock;
9898
extern Mutex* PerfDataMemAlloc_lock; // a lock on the allocator for PerfData memory for performance data
9999
extern Mutex* PerfDataManager_lock; // a long on access to PerfDataManager resources
100-
extern Mutex* OopMapCacheAlloc_lock; // protects allocation of oop_map caches
101100

102101
extern Mutex* FreeList_lock; // protects the free region list during safepoints
103102
extern Mutex* OldSets_lock; // protects the old region sets

src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1140,9 +1140,7 @@ public final ForkJoinWorkerThread newThread(ForkJoinPool pool) {
11401140
boolean isCommon = (pool.workerNamePrefix == null);
11411141
@SuppressWarnings("removal")
11421142
SecurityManager sm = System.getSecurityManager();
1143-
if (sm == null)
1144-
return new ForkJoinWorkerThread(null, pool, true, false);
1145-
else if (isCommon)
1143+
if (sm != null && isCommon)
11461144
return newCommonWithACC(pool);
11471145
else
11481146
return newRegularWithACC(pool);

src/java.base/share/classes/jdk/internal/foreign/AbstractMemorySegmentImpl.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -681,10 +681,6 @@ public static long mismatch(MemorySegment srcSegment, long srcFromOffset, long s
681681
long dstBytes = dstToOffset - dstFromOffset;
682682
srcImpl.checkAccess(srcFromOffset, srcBytes, true);
683683
dstImpl.checkAccess(dstFromOffset, dstBytes, true);
684-
if (dstImpl == srcImpl) {
685-
srcImpl.checkValidState();
686-
return -1;
687-
}
688684

689685
long bytes = Math.min(srcBytes, dstBytes);
690686
long i = 0;

src/java.base/share/legal/zlib.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
## zlib v1.3
1+
## zlib v1.3.1
22

33
### zlib License
44
<pre>
55

6-
Copyright (C) 1995-2023 Jean-loup Gailly and Mark Adler
6+
Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler
77

88
This software is provided 'as-is', without any express or implied
99
warranty. In no event will the authors be held liable for any damages

test/hotspot/jtreg/compiler/runtime/unloaded/TestMHUnloaded.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,16 @@
3131
*
3232
* @compile TestMHUnloaded.java TestMHUnloadedHelper.java
3333
* @run driver jdk.test.lib.helpers.ClassFileInstaller compiler.runtime.unloaded.TestMHUnloadedHelper
34+
*
35+
* @run main/othervm -Xbootclasspath/a:.
36+
* -Xbatch -XX:-TieredCompilation -XX:CompileCommand=exclude,*::test
37+
* -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompilation -XX:+PrintInlining
38+
* compiler.runtime.unloaded.TestMHUnloaded
39+
*
3440
* @run main/othervm -Xbootclasspath/a:.
3541
* -Xbatch -XX:-TieredCompilation -XX:CompileCommand=exclude,*::test
3642
* -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompilation -XX:+PrintInlining
43+
* -XX:+IgnoreUnrecognizedVMOptions -XX:+AlwaysIncrementalInline
3744
* compiler.runtime.unloaded.TestMHUnloaded
3845
*/
3946

test/hotspot/jtreg/gc/arguments/TestG1HeapSizeFlags.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -28,7 +28,7 @@
2828
* @bug 8006088
2929
* @summary Tests argument processing for initial and maximum heap size for the G1 collector
3030
* @key flag-sensitive
31-
* @requires vm.gc.G1 & vm.opt.x.Xmx == null & vm.opt.x.Xms == null & vm.opt.MinHeapSize == null & vm.opt.MaxHeapSize == null & vm.opt.InitialHeapSize == null
31+
* @requires vm.gc.G1 & vm.opt.MinHeapSize == null & vm.opt.MaxHeapSize == null & vm.opt.InitialHeapSize == null
3232
* @library /test/lib
3333
* @library /
3434
* @modules java.base/jdk.internal.misc

test/hotspot/jtreg/gc/arguments/TestHeapFreeRatio.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
2727
* @test TestHeapFreeRatio
2828
* @bug 8025661
2929
* @summary Test parsing of -Xminf and -Xmaxf
30-
* @requires vm.opt.x.Xminf == null & vm.opt.x.Xmaxf == null & vm.opt.MinHeapFreeRatio == null & vm.opt.MaxHeapFreeRatio == null
30+
* @requires vm.opt.MinHeapFreeRatio == null & vm.opt.MaxHeapFreeRatio == null
3131
* @library /test/lib
3232
* @library /
3333
* @modules java.base/jdk.internal.misc

0 commit comments

Comments
 (0)