[vmkit-commits] [vmkit] r110146 - in /vmkit/trunk: lib/Mvm/MMTk/MutatorThread.h mmtk/mmtk-alloc/Selected.cpp mmtk/mmtk-j3/ActivePlan.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue Aug 3 13:53:35 PDT 2010
Author: geoffray
Date: Tue Aug 3 15:53:35 2010
New Revision: 110146
URL: http://llvm.org/viewvc/llvm-project?rev=110146&view=rev
Log:
Make thread creation and destruction safe when there is a GC happening.
Modified:
vmkit/trunk/lib/Mvm/MMTk/MutatorThread.h
vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp
vmkit/trunk/mmtk/mmtk-j3/ActivePlan.cpp
Modified: vmkit/trunk/lib/Mvm/MMTk/MutatorThread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/MMTk/MutatorThread.h?rev=110146&r1=110145&r2=110146&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/MMTk/MutatorThread.h (original)
+++ vmkit/trunk/lib/Mvm/MMTk/MutatorThread.h Tue Aug 3 15:53:35 2010
@@ -18,7 +18,9 @@
class MutatorThread : public mvm::Thread {
public:
- MutatorThread() : mvm::Thread() {}
+ MutatorThread() : mvm::Thread() {
+ MutatorContext = 0;
+ }
mvm::BumpPtrAllocator Allocator;
uintptr_t MutatorContext;
Modified: vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp?rev=110146&r1=110145&r2=110146&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp Tue Aug 3 15:53:35 2010
@@ -74,7 +74,9 @@
th->MutatorContext =
JnJVM_org_j3_bindings_Bindings_allocateMutator__I((int32_t)_th->getThreadID());
th->realRoutine(_th);
- JnJVM_org_j3_bindings_Bindings_freeMutator__Lorg_mmtk_plan_MutatorContext_2(th->MutatorContext);
+ uintptr_t context = th->MutatorContext;
+ th->MutatorContext = 0;
+ JnJVM_org_j3_bindings_Bindings_freeMutator__Lorg_mmtk_plan_MutatorContext_2(context);
}
bool Collector::isLive(gc* ptr, uintptr_t closure) {
Modified: vmkit/trunk/mmtk/mmtk-j3/ActivePlan.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/ActivePlan.cpp?rev=110146&r1=110145&r2=110146&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/ActivePlan.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/ActivePlan.cpp Tue Aug 3 15:53:35 2010
@@ -34,6 +34,9 @@
A->current = (mvm::MutatorThread*)A->current->next();
}
+ if (A->current->MutatorContext == 0) {
+ return Java_org_j3_mmtk_ActivePlan_getNextMutator__(A);
+ }
return (JavaObject*)A->current->MutatorContext;
}
More information about the vmkit-commits
mailing list