You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by wj...@apache.org on 2006/08/24 22:59:22 UTC

svn commit: r434523 - /incubator/harmony/enhanced/drlvm/trunk/vm/MMTk/test.java

Author: wjwashburn
Date: Thu Aug 24 13:59:21 2006
New Revision: 434523

URL: http://svn.apache.org/viewvc?rev=434523&view=rev
Log:
mods that demo marksweep

Modified:
    incubator/harmony/enhanced/drlvm/trunk/vm/MMTk/test.java

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/MMTk/test.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/MMTk/test.java?rev=434523&r1=434522&r2=434523&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/MMTk/test.java (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/MMTk/test.java Thu Aug 24 13:59:21 2006
@@ -20,47 +20,104 @@
  * @version $Revision$
  */
 import org.vmmagic.unboxed.*;
-import org.apache.HarmonyDRLVM.mm.mmtk.*;
+import org.apache.HarmonyDRLVM.mm.mmtk.*;  ///org.apache.HarmonyDRLVM.mm.mmtk
 import org.mmtk.vm.*;
 import org.mmtk.plan.nogc.*;
+import org.mmtk.plan.Plan;
+import org.mmtk.plan.CollectorContext;
+import org.mmtk.utility.heap.LazyMmapper;
+import org.mmtk.plan.MutatorContext;
+import org.mmtk.plan.marksweep.MS;
+import org.mmtk.utility.options.*;
+import org.mmtk.utility.Log;
+import org.mmtk.utility.heap.*;
 
-public class test {
+public class test 
+{
 	public static void main(String[] args) {
         VM vm_init = new VM();
-        NoGC nogc = new NoGC();
+        MS pl2 = (MS)SelectedPlan.get();
+        // toss -- moved to SelectedPlan org.apache.HarmonyDRLVM.mm.mmtk.ActivePlan ap = new org.apache.HarmonyDRLVM.mm.mmtk.ActivePlan();
+        Plan pl = SelectedPlan.ap.global();
+
+        pl2.boot();
+        pl.fullyBooted();
+        org.apache.HarmonyDRLVM.mm.mmtk.SynchronizedCounter.boot();
+        LazyMmapper.boot(Address.zero(), 0 );
+        HeapGrowthManager.boot(Extent.fromInt(1024*1024*1), Extent.fromInt(1024*1024*1) ); //see Memory.java
+
+        MutatorContext mc = SelectedPlan.ap.mutator();
+        CollectorContext cc = SelectedPlan.ap.collector();
+
+        Address addr = null;
+        //Address addr = mc.alloc(64, 0, 0, 0, 0);
+        //System.out.println("addr = " + Integer.toHexString(addr.toInt() ) );
+        
+        //NoGC nogc = new NoGC();
         //NoGCMutator mc = (NoGCMutator)VM.activePlan.mutator(0);    //getNextMutator();
         //System.out.println("test NoGC, mc = " + mc);
-        NoGCMutator nm = new NoGCMutator();
+        //NoGCMutator nm = new NoGCMutator();
 
-        Address addr;
-        for (int kk = 0; kk < 10; kk++) 
+        System.out.println("top of test wjw------");
+        test0();
+        test1();
+        test2();
+        testWB();
+        //System.out.println("verbose = " + org.mmtk.utility.options.Options.verbose.getValue() );
+
+        int [] ia = new int[10];
+        ObjectReference or = ObjectReference.fromObject(ia);
+        Address addr2 = or.toAddress();
+        int vtblPtr = addr2.loadInt();
+        Address addr3 = addr2.plus(8);
+        int length = addr3.loadInt();
+        if (length != 10) System.out.println("test.java -- bad length -------------------" + length);
+        
+        for (int kk = 0;  kk < 10; kk++)
         {
-            addr = nm.alloc(64, 8, 0, NoGC.ALLOC_DEFAULT, 0);
-
-            Object obj = new Object();
-            ObjectReference or = ObjectReference.fromObject(obj);
-            Address addr2 = or.toAddress();
-            int vtblPtr = addr2.loadInt();
+            addr = mc.alloc(52, 0, 0, Plan.ALLOC_DEFAULT, 0);
+            //addr = mc.alloc(1024, 0, 0, Plan.ALLOC_LOS, 0);
 
             addr.store(vtblPtr);
+            Address addrLen = addr.plus(8);
+            addrLen.store(length);
             ObjectReference or2 = addr.toObjectReference();
 
             Object obj2 = or2.toObject();
 
-            System.out.println("obj2 = " + obj2);
+            //System.out.println(obj2 + " " + obj2.hashCode() );
         }
+        Address addrElementZero = addr.plus(12);
+        addrElementZero.store(addr);  // stuff the _address_ of the array into an element to test enumeration
+        org.apache.HarmonyDRLVM.mm.mmtk.Scanning.addressOfTestRoot = addrElementZero.toInt();
+        System.out.println("addressOfTestRoot = " + Integer.toHexString(addrElementZero.toInt() ) );
+        System.out.println("the root itself is = " + Integer.toHexString(addr.toInt()) );
+
+        or = addr.toObjectReference();
+        ia = (int []) (or.toObject() );
 
-        for (long ii = 0; ii < 0x00FFffFFffFFffFFL; ii++) // for it to run out of memory, see if error msg is correct
+        for (int kk = 0;  kk < 1024*1024*1024; kk++)
         {
-            addr = nm.alloc(64, 8, 0, NoGC.ALLOC_DEFAULT, 0);
-            //System.out.println("test NoGC alloc --- " + Integer.toHexString(addr.toInt()) );
+            ia[3] = ia[4] = ia[5] = ia[6] = ia[7] = ia[8] = kk;
+            for (int jj = 0; jj < 800000; jj++) 
+            {
+                addr = mc.alloc(52, 0, 0, Plan.ALLOC_DEFAULT, 0);
+                addr.store(vtblPtr);
+                Address addrLen = addr.plus(8);
+                addrLen.store(length);
+                ObjectReference or2 = addr.toObjectReference();
+                Object obj2 = or2.toObject();
+            }
+            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ test loop iteration = " + kk);
+            if ( (ia[3] != kk) | (ia[4] != kk) | (ia[5] != kk) | (ia[6] != kk) | (ia[7] != kk) | (ia[8] != kk)  )
+                VM.assertions._assert(false);
         }
 
-        System.out.println("top of test wjw------");
-		test0();
-		test1();
-		test2();
-		testWB();
+        //for (long ii = 0; ii < 0x00FFffFFffFFffFFL; ii++) // for it to run out of memory, see if error msg is correct
+        {
+            //addr = nm.alloc(64, 8, 0, NoGC.ALLOC_DEFAULT, 0);
+            //System.out.println("test NoGC alloc --- " + Integer.toHexString(addr.toInt()) );
+        }
 	}
 
 	static final int arrayLenOffset = 8;
@@ -127,5 +184,6 @@
 		//
 		System.out.println("testWB - seems ok");
 	}
-
+//// from DRLVM gc_header.h
+//// 
 }