[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