[vmkit-commits] [vmkit] r86253 - /vmkit/trunk/mmtk/mmtk-j3/Collection.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Fri Nov 6 07:38:21 PST 2009


Author: geoffray
Date: Fri Nov  6 09:38:20 2009
New Revision: 86253

URL: http://llvm.org/viewvc/llvm-project?rev=86253&view=rev
Log:
Mimic what JikesRVM does.


Modified:
    vmkit/trunk/mmtk/mmtk-j3/Collection.cpp

Modified: vmkit/trunk/mmtk/mmtk-j3/Collection.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/Collection.cpp?rev=86253&r1=86252&r2=86253&view=diff

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Collection.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Collection.cpp Fri Nov  6 09:38:20 2009
@@ -19,7 +19,12 @@
 extern "C" void JnJVM_org_mmtk_plan_Plan_collectionComplete__();
 
 extern "C" uint8_t JnJVM_org_mmtk_utility_heap_HeapGrowthManager_considerHeapSize__();
+  
+extern "C" void JnJVM_org_mmtk_utility_heap_HeapGrowthManager_reset__();
+
+extern "C" int64_t Java_org_j3_mmtk_Statistics_nanoTime__ ();
 
+extern "C" void JnJVM_org_mmtk_utility_heap_HeapGrowthManager_recordGCTime__D(double);
 
 extern "C" bool Java_org_j3_mmtk_Collection_isEmergencyAllocation__ (JavaObject* C) {
   // TODO: emergency when OOM.
@@ -30,7 +35,6 @@
   // TODO: clear internal data.
 }
 
-
 extern "C" void Java_org_j3_mmtk_Collection_triggerCollection__I (JavaObject* C, int why) {
   mvm::Thread* th = mvm::Thread::get();
  
@@ -38,10 +42,23 @@
   th->MyVM->rendezvous.synchronize();
   
   JnJVM_org_mmtk_plan_Plan_setCollectionTriggered__();
+
+  // Record the starting time
+  int64_t startTime = Java_org_j3_mmtk_Statistics_nanoTime__();
+
+  // Collect!
   JnJVM_org_j3_config_Selected_00024Collector_staticCollect__();
+
+  // Record the time to GC.
+  int64_t elapsedTime = Java_org_j3_mmtk_Statistics_nanoTime__() - startTime;
+  JnJVM_org_mmtk_utility_heap_HeapGrowthManager_recordGCTime__D(((double)elapsedTime) / 1000000);
+
   // 2 means called by System.gc();
   if (why != 2)
     JnJVM_org_mmtk_utility_heap_HeapGrowthManager_considerHeapSize__();
+
+  JnJVM_org_mmtk_utility_heap_HeapGrowthManager_reset__();
+
   JnJVM_org_mmtk_plan_Plan_collectionComplete__();
 
   th->MyVM->rendezvous.finishRV();





More information about the vmkit-commits mailing list