[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