|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
SF.net SVN: jikesrvm:[15745] rvmroot/trunk/MMTk/harnessRevision: 15745
http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=15745&view=rev Author: rgarner Date: 2009-07-24 06:35:27 +0000 (Fri, 24 Jul 2009) Log Message: ----------- MMTk Harness - make script-language barriers work across GCs. Modified Paths: -------------- rvmroot/trunk/MMTk/harness/src/org/mmtk/harness/scheduler/javathreads/JavaThreadModel.java rvmroot/trunk/MMTk/harness/src/org/mmtk/harness/scheduler/rawthreads/RawThreadModel.java rvmroot/trunk/MMTk/harness/test-scripts/SpreadAlloc16.script rvmroot/trunk/MMTk/harness/test-scripts/lang/barriers.script Modified: rvmroot/trunk/MMTk/harness/src/org/mmtk/harness/scheduler/javathreads/JavaThreadModel.java =================================================================== --- rvmroot/trunk/MMTk/harness/src/org/mmtk/harness/scheduler/javathreads/JavaThreadModel.java 2009-07-23 14:39:56 UTC (rev 15744) +++ rvmroot/trunk/MMTk/harness/src/org/mmtk/harness/scheduler/javathreads/JavaThreadModel.java 2009-07-24 06:35:27 UTC (rev 15745) @@ -275,7 +275,14 @@ @Override public int mutatorRendezvous(String where, int expected) { - return Rendezvous.rendezvous(where,expected); + synchronized (count) { + mutatorsWaitingForGC++; + } + int ordinal = Rendezvous.rendezvous(where,expected); + synchronized (count) { + mutatorsWaitingForGC--; + } + return ordinal; } @Override Modified: rvmroot/trunk/MMTk/harness/src/org/mmtk/harness/scheduler/rawthreads/RawThreadModel.java =================================================================== --- rvmroot/trunk/MMTk/harness/src/org/mmtk/harness/scheduler/rawthreads/RawThreadModel.java 2009-07-23 14:39:56 UTC (rev 15744) +++ rvmroot/trunk/MMTk/harness/src/org/mmtk/harness/scheduler/rawthreads/RawThreadModel.java 2009-07-24 06:35:27 UTC (rev 15745) @@ -362,7 +362,6 @@ break; case BEGIN_GC: if (runQueue.isEmpty()) { - assert gcWaitQueue.size() == mutators.size(); setState(GC); Trace.trace(Item.SCHEDULER, "%d: Changing to state GC - scheduling %d GC threads", scheduler.getId(),collectorWaitQueue.size()); Modified: rvmroot/trunk/MMTk/harness/test-scripts/SpreadAlloc16.script =================================================================== --- rvmroot/trunk/MMTk/harness/test-scripts/SpreadAlloc16.script 2009-07-23 14:39:56 UTC (rev 15744) +++ rvmroot/trunk/MMTk/harness/test-scripts/SpreadAlloc16.script 2009-07-24 06:35:27 UTC (rev 15745) @@ -33,9 +33,11 @@ int large = 2500; // # scalars in the largest object int i=0; + barrierWait("begin",32); object parent = alloc(live, 0, false); // Parent object with 'live' pointers while (i < n) { // loop for a while parent.object[i%live] = alloc(0, random(small,large), false); i = i + 1; // loop counter } + barrierWait("end",32); } Modified: rvmroot/trunk/MMTk/harness/test-scripts/lang/barriers.script =================================================================== --- rvmroot/trunk/MMTk/harness/test-scripts/lang/barriers.script 2009-07-23 14:39:56 UTC (rev 15744) +++ rvmroot/trunk/MMTk/harness/test-scripts/lang/barriers.script 2009-07-24 06:35:27 UTC (rev 15745) @@ -15,14 +15,29 @@ * Test synchronization barriers */ void main() { - spawn(thread); - spawn(thread); + spawn(thread1); + spawn(thread1); barrierWait("finish",3); - print("Exit"); + print("Phase 1 - complete"); + + spawn(thread2); + spawn(thread2); + barrierWait("thread2-begin",3); + // Pause for a while + int i=0; + while (i < 1000) { + object tmp = alloc(10,10); + i = i + 1; + } + print("Phase 2 - requesting GC"); + gc(); + print("Phase 2 - GC complete"); + barrierWait("thread2-end",3); + print("Phase 2 - end"); } -void thread() { +void thread1() { barrierWait("begin",2); print("Reached barrier <begin>"); int ordinal = barrierWait("end",2); @@ -30,4 +45,12 @@ print("First thread"); } barrierWait("finish",3); +} + +void thread2() { + print("thread2 starting"); + barrierWait("thread2-begin",3); + print("thread2 middle"); + barrierWait("thread2-end",3); + print("thread2 end"); } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ _______________________________________________ Jikesrvm-commits mailing list Jikesrvm-commits@... https://lists.sourceforge.net/lists/listinfo/jikesrvm-commits |
| Free embeddable forum powered by Nabble | Forum Help |