[vmkit-commits] [vmkit] r85760 - in /vmkit/trunk: lib/Mvm/Compiler/JIT.cpp lib/Mvm/MMTk/MvmGC.cpp lib/Mvm/MMTk/MvmGC.h mmtk/mmtk-j3/Collection.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Nov 1 15:08:08 PST 2009
Author: geoffray
Date: Sun Nov 1 17:08:08 2009
New Revision: 85760
URL: http://llvm.org/viewvc/llvm-project?rev=85760&view=rev
Log:
Allow user-triggered collections.
Modified:
vmkit/trunk/lib/Mvm/Compiler/JIT.cpp
vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp
vmkit/trunk/lib/Mvm/MMTk/MvmGC.h
vmkit/trunk/mmtk/mmtk-j3/Collection.cpp
Modified: vmkit/trunk/lib/Mvm/Compiler/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Compiler/JIT.cpp?rev=85760&r1=85759&r2=85760&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Compiler/JIT.cpp (original)
+++ vmkit/trunk/lib/Mvm/Compiler/JIT.cpp Sun Nov 1 17:08:08 2009
@@ -263,8 +263,10 @@
gc::MMTkGetForwardedFinalizable = (gc::MMTkGetForwardedFinalizableType)
(uintptr_t)executionEngine->getPointerToFunction(F);
-
-
+ F = globalModule->getFunction("Java_org_j3_mmtk_Collection_triggerCollection__I");
+ assert(F && "Could not find external collect");
+ gc::MMTkTriggerCollection = (gc::MMTkCollectType)
+ (uintptr_t)executionEngine->getPointerToFunction(F);
}
#endif
Modified: vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp?rev=85760&r1=85759&r2=85760&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp (original)
+++ vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp Sun Nov 1 17:08:08 2009
@@ -28,6 +28,7 @@
gc::MMTkGetForwardedReferentType gc::MMTkGetForwardedReferent = 0;
gc::MMTkGetForwardedReferenceType gc::MMTkGetForwardedReference = 0;
gc::MMTkGetForwardedFinalizableType gc::MMTkGetForwardedFinalizable = 0;
+gc::MMTkCollectType gc::MMTkTriggerCollection = 0;
uintptr_t Collector::TraceLocal = 0;
Modified: vmkit/trunk/lib/Mvm/MMTk/MvmGC.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/MMTk/MvmGC.h?rev=85760&r1=85759&r2=85760&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/MMTk/MvmGC.h (original)
+++ vmkit/trunk/lib/Mvm/MMTk/MvmGC.h Sun Nov 1 17:08:08 2009
@@ -64,6 +64,7 @@
typedef MMTkRetainReferentType MMTkGetForwardedReferenceType;
typedef MMTkRetainReferentType MMTkGetForwardedReferentType;
typedef MMTkRetainReferentType MMTkGetForwardedFinalizableType;
+ typedef void (*MMTkCollectType)(uintptr_t, int32_t);
static MMTkAllocType MMTkGCAllocator;
@@ -85,6 +86,7 @@
static MMTkGetForwardedReferentType MMTkGetForwardedReferent;
static MMTkGetForwardedFinalizableType MMTkGetForwardedFinalizable;
+ static MMTkCollectType MMTkTriggerCollection;
void* operator new(size_t sz, VirtualTable *VT) {
assert(VT->tracer && "VT without a tracer");
@@ -158,7 +160,7 @@
}
static void collect() {
- abort();
+ if (gc::MMTkTriggerCollection) gc::MMTkTriggerCollection(NULL, 2);
}
static void initialise();
Modified: vmkit/trunk/mmtk/mmtk-j3/Collection.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/Collection.cpp?rev=85760&r1=85759&r2=85760&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Collection.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Collection.cpp Sun Nov 1 17:08:08 2009
@@ -39,7 +39,9 @@
JnJVM_org_mmtk_plan_Plan_setCollectionTriggered__();
JnJVM_org_j3_config_Selected_00024Collector_staticCollect__();
- JnJVM_org_mmtk_utility_heap_HeapGrowthManager_considerHeapSize__();
+ // 2 means called by System.gc();
+ if (why != 2)
+ JnJVM_org_mmtk_utility_heap_HeapGrowthManager_considerHeapSize__();
JnJVM_org_mmtk_plan_Plan_collectionComplete__();
th->MyVM->rendezvous.finishRV();
More information about the vmkit-commits
mailing list