Skip to content

Commit b01e1cb

Browse files
authored
Allow DynamicHeapSize (#190)
1 parent af135be commit b01e1cb

File tree

6 files changed

+37
-9
lines changed

6 files changed

+37
-9
lines changed

.github/scripts/ci-test-only-normal.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHea
2323
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar hsqldb
2424
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar eclipse
2525

26+
# Test heap resizing
27+
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms20M -Xmx100M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
28+
2629
# --- Immix ---
2730
export MMTK_PLAN=Immix
2831

@@ -41,6 +44,9 @@ build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHea
4144
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar hsqldb
4245
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar eclipse
4346

47+
# Test heap resizing
48+
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms20M -Xmx100M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
49+
4450
# --- Immix ---
4551
export MMTK_PLAN=GenImmix
4652

@@ -59,6 +65,9 @@ build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHea
5965
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar hsqldb
6066
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms500M -Xmx500M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar eclipse
6167

68+
# Test heap resizing
69+
build/linux-x86_64-normal-server-$DEBUG_LEVEL/jdk/bin/java -XX:+UseThirdPartyHeap -server -XX:MetaspaceSize=100M -Xms20M -Xmx100M -jar $DACAPO_PATH/dacapo-2006-10-MR2.jar fop
70+
6271
# --- GenCopy ---
6372
export MMTK_PLAN=GenCopy
6473

mmtk/Cargo.lock

Lines changed: 14 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mmtk/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ once_cell = "1.10.0"
3030
# - change branch
3131
# - change repo name
3232
# But other changes including adding/removing whitespaces in commented lines may break the CI.
33-
mmtk = { git = "https://github.com/mmtk/mmtk-core.git", rev = "4aa643773ec3ec9c4f47f696533bdd56554c03df" }
33+
mmtk = { git = "https://github.com/mmtk/mmtk-core.git", rev = "2300ce1d4a7c99053c5bb7055b377a71c9241e85" }
3434
# Uncomment the following to build locally
3535
# mmtk = { path = "../repos/mmtk-core" }
3636

mmtk/src/api.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,15 @@ pub extern "C" fn openjdk_is_gc_initialized() -> bool {
9292
}
9393

9494
#[no_mangle]
95-
pub extern "C" fn mmtk_set_heap_size(size: usize) -> bool {
95+
pub extern "C" fn mmtk_set_heap_size(min: usize, max: usize) -> bool {
96+
use mmtk::util::options::GCTriggerSelector;
9697
let mut builder = BUILDER.lock().unwrap();
97-
builder.options.heap_size.set(size)
98+
let policy = if min == max {
99+
GCTriggerSelector::FixedHeapSize(min)
100+
} else {
101+
GCTriggerSelector::DynamicHeapSize(min, max)
102+
};
103+
builder.options.gc_trigger.set(policy)
98104
}
99105

100106
#[no_mangle]

openjdk/mmtk.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ typedef struct {
184184
extern void openjdk_gc_init(OpenJDK_Upcalls *calls);
185185
extern bool openjdk_is_gc_initialized();
186186

187-
extern bool mmtk_set_heap_size(size_t size);
187+
extern bool mmtk_set_heap_size(size_t min, size_t max);
188188

189189
extern size_t used_bytes();
190190
extern void* starting_heap_address();

openjdk/mmtkHeap.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ jint MMTkHeap::initialize() {
7373
assert(!UseTLAB , "should disable UseTLAB");
7474
assert(!UseCompressedOops , "should disable CompressedOops");
7575
assert(!UseCompressedClassPointers , "should disable UseCompressedClassPointers");
76-
const size_t heap_size = collector_policy()->max_heap_byte_size();
76+
const size_t min_heap_size = collector_policy()->min_heap_byte_size();
77+
const size_t max_heap_size = collector_policy()->max_heap_byte_size();
7778
// printf("policy max heap size %zu, min heap size %zu\n", heap_size, collector_policy()->min_heap_byte_size());
7879

7980
// Set options
@@ -82,8 +83,8 @@ jint MMTkHeap::initialize() {
8283
guarantee(set_options, "Failed to set MMTk options. Please check if the options are valid: %s\n", ThirdPartyHeapOptions);
8384
}
8485
// Set heap size
85-
bool set_heap_size = mmtk_set_heap_size(heap_size);
86-
guarantee(set_heap_size, "Failed to set MMTk heap size. Please check if the heap size is valid: %ld\n", heap_size);
86+
bool set_heap_size = mmtk_set_heap_size(min_heap_size, max_heap_size);
87+
guarantee(set_heap_size, "Failed to set MMTk heap size. Please check if the heap size is valid: min = %ld, max = %ld\n", min_heap_size, max_heap_size);
8788

8889
openjdk_gc_init(&mmtk_upcalls);
8990
// Cache the value here. It is a constant depending on the selected plan. The plan won't change from now, so value won't change.

0 commit comments

Comments
 (0)