Skip to content

Commit 68e57e9

Browse files
[GR-67472] Fix options ReservedAddressSpaceSize and MaxReservedAddressSpaceSize.
PullRequest: graal/21445
2 parents 4c84b4e + 484ca0d commit 68e57e9

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/AddressRangeCommittedMemoryProvider.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,16 @@ public AddressRangeCommittedMemoryProvider() {
144144
@Override
145145
@Uninterruptible(reason = "Still being initialized.")
146146
public int initialize(WordPointer heapBasePointer, IsolateArguments arguments) {
147-
UnsignedWord maxAddressSpaceSize = ReferenceAccess.singleton().getMaxAddressSpaceSize();
148147
UnsignedWord reserved = Word.unsigned(IsolateArgumentAccess.readLong(arguments, IsolateArgumentParser.getOptionIndex(SubstrateGCOptions.ReservedAddressSpaceSize)));
149148
if (reserved.equal(0)) {
150-
/* Reserve a 32 GB address space, except if a larger heap size was specified. */
149+
/*
150+
* Reserve a 32 GB address space, except if a larger heap size was specified, or if the
151+
* maximum address space size is less than that.
152+
*/
151153
UnsignedWord maxHeapSize = Word.unsigned(IsolateArgumentAccess.readLong(arguments, IsolateArgumentParser.getOptionIndex(SubstrateGCOptions.MaxHeapSize)));
152-
reserved = UnsignedUtils.clamp(maxHeapSize, Word.unsigned(MIN_RESERVED_ADDRESS_SPACE_SIZE), maxAddressSpaceSize);
154+
reserved = UnsignedUtils.max(maxHeapSize, Word.unsigned(MIN_RESERVED_ADDRESS_SPACE_SIZE));
153155
}
156+
reserved = UnsignedUtils.min(reserved, ReferenceAccess.singleton().getMaxAddressSpaceSize());
154157

155158
UnsignedWord alignment = unsigned(Heap.getHeap().getPreferredAddressSpaceAlignment());
156159
WordPointer beginOut = StackValue.get(WordPointer.class);

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/IsolateArgumentParser.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,14 @@ protected void initialize(IsolateArguments arguments, CEntryPointCreateIsolatePa
389389
arguments.setIsCompilationIsolate(false);
390390
}
391391

392-
writeLong(arguments, getOptionIndex(SubstrateGCOptions.ReservedAddressSpaceSize), parameters.reservedSpaceSize().rawValue());
392+
/*
393+
* If a value for ReservedAddressSpaceSize is set in the isolate parameters, then this value
394+
* has a higher priority than a default value that was set at build-time.
395+
*/
396+
UnsignedWord reservedAddressSpaceSize = parameters.reservedSpaceSize();
397+
if (reservedAddressSpaceSize.notEqual(0)) {
398+
writeLong(arguments, getOptionIndex(SubstrateGCOptions.ReservedAddressSpaceSize), reservedAddressSpaceSize.rawValue());
399+
}
393400
}
394401

395402
@Uninterruptible(reason = CALLED_FROM_UNINTERRUPTIBLE_CODE, mayBeInlined = true)

0 commit comments

Comments
 (0)