Skip to content

Commit 968d4cc

Browse files
committed
Archive various pieces of test code.
1 parent 7d2190a commit 968d4cc

File tree

6 files changed

+67
-16
lines changed

6 files changed

+67
-16
lines changed

MMTk/src/org/mmtk/plan/Plan.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ public abstract class Plan implements Constants {
129129
public static final LargeObjectSpace largeCodeSpace = USE_CODE_SPACE ? new LargeObjectSpace("lg-code", VMRequest.discontiguous()) : null;
130130

131131
public static int pretenureThreshold = Integer.MAX_VALUE;
132+
public static int stwTrigger = 0;
132133

133134
/* Space descriptors */
134135
public static final int IMMORTAL = immortalSpace.getDescriptor();
@@ -174,6 +175,7 @@ public Plan() {
174175
Options.variableSizeHeap = new VariableSizeHeap();
175176
Options.eagerMmapSpaces = new EagerMmapSpaces();
176177
Options.sanityCheck = new SanityCheck();
178+
Options.stwTrigger = new STWTrigger();
177179
Options.debugAddress = new DebugAddress();
178180
Options.perfEvents = new PerfEvents();
179181
Options.useReturnBarrier = new UseReturnBarrier();
@@ -232,6 +234,7 @@ public void processOptions() {
232234
if (Options.verbose.getValue() > 0) Stats.startAll();
233235
if (Options.eagerMmapSpaces.getValue()) Space.eagerlyMmapMMTkSpaces();
234236
pretenureThreshold = (int) ((Options.nurserySize.getMaxNursery()<<LOG_BYTES_IN_PAGE) * Options.pretenureThresholdFraction.getValue());
237+
stwTrigger = Options.stwTrigger.getValue();
235238
}
236239

237240
/**
@@ -940,7 +943,12 @@ protected void logPoll(Space space, String message) {
940943
*/
941944
protected boolean collectionRequired(boolean spaceFull, Space space) {
942945
boolean stressForceGC = stressTestGCRequired();
943-
boolean heapFull = getPagesReserved() > getTotalPages();
946+
boolean heapFull;
947+
if (stwTrigger > 0) {
948+
heapFull = getPagesReserved() > stwTrigger;
949+
} else {
950+
heapFull = getPagesReserved() > getTotalPages();
951+
}
944952

945953
return spaceFull || stressForceGC || heapFull;
946954
}

MMTk/src/org/mmtk/plan/otfsapphire/OTFSapphire.java

+16-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.mmtk.policy.Space;
2020
import org.mmtk.plan.*;
2121
import org.mmtk.plan.onthefly.OnTheFly;
22+
import org.mmtk.utility.Conversions;
2223
import org.mmtk.utility.Log;
2324
import org.mmtk.utility.alloc.Allocator;
2425
import org.mmtk.utility.alloc.BumpPointer;
@@ -487,6 +488,7 @@ public void scan(ObjectReference object, boolean live, Address cellAddress, Exte
487488
public OTFSapphireCopyScan copyScan;
488489
private int concurrentTriggerMethod;
489490
private int concurrentTrigger;
491+
private int stwTrigger = 0;
490492
private int lastCollectionUsedPages = 0;
491493
private long lastCollectionStartTime = 0;
492494
private long lastCollectionCompleteTime = 0;
@@ -724,6 +726,7 @@ public void collectionPhase(short phaseId) {
724726

725727
if (phaseId == RELEASE_FLIP) {
726728
if (VM.VERIFY_ASSERTIONS) assert_TO_SPLACE_LOCAL_IS_EMPTY = true;
729+
printHeapUsage();
727730
low = !low; // flip the semi-spaces
728731
toSpace().release();
729732
OTFSapphire.tackOnLock.acquire();
@@ -754,6 +757,13 @@ public void collectionPhase(short phaseId) {
754757
super.collectionPhase(phaseId);
755758
}
756759

760+
protected void printHeapUsage() {
761+
Log.write("->"); Log.write(Conversions.pagesToKBytes(getPagesUsed())); Log.write(" KB");
762+
Log.write(" (From = "); Log.write(Conversions.pagesToKBytes(fromSpace().reservedPages()));
763+
Log.write(" KB To = "); Log.write(Conversions.pagesToKBytes(toSpace().reservedPages()));
764+
Log.write(" KB Other = "); Log.write(Conversions.pagesToKBytes(super.getPagesUsed())); Log.write(" KB) ");
765+
}
766+
757767
@Override
758768
@Inline
759769
protected boolean collectorHasWork() {
@@ -789,7 +799,11 @@ protected int getWeakReferenceTerminationLoopPhase() {
789799
*/
790800
public final int getCollectionReserve() {
791801
// our copy reserve is the size of fromSpace less any copying we have done so far
792-
return fromSpace().reservedPages() + super.getCollectionReserve();
802+
if (stwTrigger == 0) {
803+
return (fromSpace().reservedPages() - toSpace().reservedPages()) + super.getCollectionReserve();
804+
} else {
805+
return super.getCollectionReserve();
806+
}
793807
}
794808

795809
/**
@@ -1013,6 +1027,7 @@ public void processOptions() {
10131027
copyScanSTW = new OTFSapphireCopyScan.CopyScanUnsafe2(flipRootTrace);
10141028
concurrentTriggerMethod = Options.concurrentTriggerMethod.method();
10151029
concurrentTrigger = Options.concurrentTrigger.getValueForMethod(concurrentTriggerMethod);
1030+
stwTrigger = Options.stwTrigger.getValue();
10161031

10171032
if (MERGE_REPLICATE_PHASE) Log.writeln("Option: MERGE_REPLICATE_PHASE");
10181033
if (REPLICATE_WITH_CAS) Log.writeln("Option: REPLICATE_WITH_CAS");

MMTk/src/org/mmtk/plan/otfsapphire/OTFSapphireConstraints.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public int gcHeaderWords() {
3333
public int numSpecializedScans() { return 0; }
3434

3535
@Override
36-
public int maxNonLOSDefaultAllocBytes() { return !OTFSapphire.NO_LOS ? BYTES_IN_PAGE : org.mmtk.utility.Constants.MAX_INT; }
36+
public int maxNonLOSDefaultAllocBytes() { return !OTFSapphire.NO_LOS ? BYTES_IN_PAGE * 32: org.mmtk.utility.Constants.MAX_INT; }
3737

3838
// LPJH: later implement bulkCopy support
3939

MMTk/src/org/mmtk/plan/otfsapphire/OTFSapphireMutator.java

+12
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ final void setupBarrier() {
117117
protected ReplicatingSpace fromSpace;
118118
private Address fromSpaceReplica = Address.zero();
119119

120+
private boolean inGC = false;
121+
private int allocInGC = 0;
122+
120123
/****************************************************************************
121124
*
122125
* Initialization
@@ -239,6 +242,8 @@ public int checkAllocator(int bytes, int align, int allocator) {
239242
@Inline
240243
public Address alloc(int bytes, int align, int offset, int allocator, int site) {
241244
Address addy;
245+
if (inGC)
246+
allocInGC += bytes;
242247
if (VM.VERIFY_ASSERTIONS) VM.assertions._assert(fromSpaceReplica.isZero());
243248
if (allocator == OTFSapphire.ALLOC_REPLICATING) {
244249
addy = fromSpaceLocal.alloc(bytes, align, offset); // may cause GC
@@ -427,6 +432,8 @@ public void collectionPhase(short phaseId, boolean primary) {
427432
if (!prepared)
428433
super.collectionPhase(Simple.PREPARE, primary);
429434
prepared = false;
435+
allocInGC = 0;
436+
inGC = true;
430437
return;
431438
}
432439

@@ -578,6 +585,11 @@ public void collectionPhase(short phaseId, boolean primary) {
578585
setupBarrier();
579586
if (VM.VERIFY_ASSERTIONS) VM.assertions._assert(!barrierEnable());
580587
super.collectionPhase(Simple.RELEASE, primary);
588+
inGC = false;
589+
if (allocInGC > 0) {
590+
Log.writeln("allocInGC ", allocInGC);
591+
allocInGC = 0;
592+
}
581593
return;
582594
}
583595

MMTk/src/org/mmtk/utility/options/Options.java

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public final class Options {
6262
public static SanityCheck sanityCheck;
6363
public static SapphireSTWPhase sapphireSTWPhase;
6464
public static StressFactor stressFactor;
65+
public static STWTrigger stwTrigger;
6566
public static Threads threads;
6667
public static TraceRate traceRate;
6768
public static UseReturnBarrier useReturnBarrier;

tools/bootImageRunner/sys.C

+28-13
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,9 @@ extern "C" void sysMonitorTimedWait(Word, long long);
145145
extern "C" void sysMonitorWait(Word);
146146
extern "C" void sysMonitorBroadcast(Word);
147147

148+
static void* checkMalloc(int);
149+
static void checkFree(void*);
150+
148151
// #define DEBUG_SYS
149152
// #define DEBUG_THREAD
150153

@@ -1026,7 +1029,7 @@ sysThreadCreate(Address tr, Address ip, Address fp)
10261029

10271030
// create arguments
10281031
//
1029-
sysThreadArguments = new Address[3];
1032+
sysThreadArguments = (Address*) checkMalloc(sizeof(Address) * 3);
10301033
sysThreadArguments[0] = tr;
10311034
sysThreadArguments[1] = ip;
10321035
sysThreadArguments[2] = fp;
@@ -1134,7 +1137,7 @@ sysThreadStartup(void *args)
11341137
char *stackBuf;
11351138

11361139
memset (&stack, 0, sizeof stack);
1137-
stack.ss_sp = stackBuf = new char[SIGSTKSZ];
1140+
stack.ss_sp = stackBuf = (char*) checkMalloc(sizeof(char) * SIGSTKSZ);
11381141
stack.ss_flags = 0;
11391142
stack.ss_size = SIGSTKSZ;
11401143
if (sigaltstack (&stack, 0)) {
@@ -1144,18 +1147,18 @@ sysThreadStartup(void *args)
11441147

11451148
Address tr = ((Address *)args)[0];
11461149

1147-
jmp_buf *jb = (jmp_buf*)malloc(sizeof(jmp_buf));
1150+
jmp_buf *jb = (jmp_buf*)checkMalloc(sizeof(jmp_buf));
11481151
if (setjmp(*jb)) {
11491152
// this is where we come to terminate the thread
11501153
#ifdef RVM_FOR_HARMONY
11511154
hythread_detach(NULL);
11521155
#endif
1153-
free(jb);
1156+
checkFree(jb);
11541157
*(int*)(tr + RVMThread_execStatus_offset) = RVMThread_TERMINATED;
11551158

11561159
stack.ss_flags = SS_DISABLE;
11571160
sigaltstack(&stack, 0);
1158-
delete[] stackBuf;
1161+
checkFree(stackBuf);
11591162
} else {
11601163
setThreadLocal(TerminateJmpBufKey, (void*)jb);
11611164

@@ -1242,7 +1245,7 @@ sysSetupHardwareTrapHandler()
12421245
stack_t stack;
12431246

12441247
memset (&stack, 0, sizeof stack);
1245-
stack.ss_sp = new char[SIGSTKSZ];
1248+
stack.ss_sp = (char*) checkMalloc(sizeof(char) * SIGSTKSZ);
12461249

12471250
stack.ss_size = SIGSTKSZ;
12481251
if (sigaltstack (&stack, 0)) {
@@ -1417,7 +1420,7 @@ sysMonitorCreate()
14171420
hythread_monitor_t monitor;
14181421
hythread_monitor_init_with_name(&monitor, 0, NULL);
14191422
#else
1420-
vmmonitor_t *monitor = new vmmonitor_t;
1423+
vmmonitor_t *monitor = (vmmonitor_t*) checkMalloc(sizeof(vmmonitor_t));
14211424
pthread_mutex_init(&monitor->mutex, NULL);
14221425
pthread_cond_init(&monitor->cond, NULL);
14231426
#endif
@@ -1433,7 +1436,7 @@ sysMonitorDestroy(Word _monitor)
14331436
vmmonitor_t *monitor = (vmmonitor_t*)_monitor;
14341437
pthread_mutex_destroy(&monitor->mutex);
14351438
pthread_cond_destroy(&monitor->cond);
1436-
delete monitor;
1439+
checkFree(monitor);
14371440
#endif
14381441
}
14391442

@@ -1732,10 +1735,8 @@ sysMemmove(void *dst, const void *src, Extent cnt)
17321735

17331736
int inRVMAddressSpace(Address a);
17341737

1735-
// Allocate memory.
1736-
//
1737-
extern "C" void *
1738-
sysMalloc(int length)
1738+
static void*
1739+
checkMalloc(int length)
17391740
{
17401741
void *result=malloc(length);
17411742
if (inRVMAddressSpace((Address)result)) {
@@ -1744,6 +1745,20 @@ sysMalloc(int length)
17441745
return result;
17451746
}
17461747

1748+
static void
1749+
checkFree(void* mem)
1750+
{
1751+
free(mem);
1752+
}
1753+
1754+
// Allocate memory.
1755+
//
1756+
extern "C" void *
1757+
sysMalloc(int length)
1758+
{
1759+
return checkMalloc(length);
1760+
}
1761+
17471762
extern "C" void *
17481763
sysCalloc(int length)
17491764
{
@@ -1755,7 +1770,7 @@ sysCalloc(int length)
17551770
extern "C" void
17561771
sysFree(void *location)
17571772
{
1758-
free(location);
1773+
checkFree(location);
17591774
}
17601775

17611776
// Zero a range of memory with non-temporal instructions on x86

0 commit comments

Comments
 (0)