[vmkit-commits] [vmkit] r120125 - /vmkit/branches/precise/mmtk/mmtk-j3/Lock.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed Nov 24 14:04:05 PST 2010


Author: geoffray
Date: Wed Nov 24 16:04:05 2010
New Revision: 120125

URL: http://llvm.org/viewvc/llvm-project?rev=120125&view=rev
Log:
Do not go into GC when using a GC lock! Fixes memory errors with marksweep GC.


Modified:
    vmkit/branches/precise/mmtk/mmtk-j3/Lock.cpp

Modified: vmkit/branches/precise/mmtk/mmtk-j3/Lock.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/mmtk/mmtk-j3/Lock.cpp?rev=120125&r1=120124&r2=120125&view=diff
==============================================================================
--- vmkit/branches/precise/mmtk/mmtk-j3/Lock.cpp (original)
+++ vmkit/branches/precise/mmtk/mmtk-j3/Lock.cpp Wed Nov 24 16:04:05 2010
@@ -25,10 +25,16 @@
 
 
 extern "C" void Java_org_j3_mmtk_Lock_acquire__(Lock* l) {
+  bool saved = mvm::Thread::get()->inRV;
+  mvm::Thread::get()->inRV = true;
   l->spin.acquire();
+  mvm::Thread::get()->inRV = saved;
 }
 extern "C" void Java_org_j3_mmtk_Lock_check__I (Lock* l, int i) { UNIMPLEMENTED(); }
 
 extern "C" void Java_org_j3_mmtk_Lock_release__(Lock* l) {
+  bool saved = mvm::Thread::get()->inRV;
+  mvm::Thread::get()->inRV = true;
   l->spin.release();
+  mvm::Thread::get()->inRV = saved;
 }





More information about the vmkit-commits mailing list