[vmkit-commits] [vmkit] r86285 - in /vmkit/trunk/lib/Mvm/MMTk: MvmGC.cpp MvmGC.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Fri Nov 6 12:32:10 PST 2009


Author: geoffray
Date: Fri Nov  6 14:32:10 2009
New Revision: 86285

URL: http://llvm.org/viewvc/llvm-project?rev=86285&view=rev
Log:
Add llvm.gcroots.


Modified:
    vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp
    vmkit/trunk/lib/Mvm/MMTk/MvmGC.h

Modified: vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp?rev=86285&r1=86284&r2=86285&view=diff

==============================================================================
--- vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp (original)
+++ vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp Fri Nov  6 14:32:10 2009
@@ -96,8 +96,10 @@
 }
 
 extern "C" void* gcmalloc(size_t sz, VirtualTable* VT) {
+  gc* res = 0;
+  llvm_gcroot(res, 0);
   mvm::Thread::get()->startNative(1);
-  void* res = gc::operator new(sz, VT);
+  res = (gc*)gc::operator new(sz, VT);
   mvm::Thread::get()->endNative();
   return res;
 }

Modified: vmkit/trunk/lib/Mvm/MMTk/MvmGC.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/MMTk/MvmGC.h?rev=86285&r1=86284&r2=86285&view=diff

==============================================================================
--- vmkit/trunk/lib/Mvm/MMTk/MvmGC.h (original)
+++ vmkit/trunk/lib/Mvm/MMTk/MvmGC.h Fri Nov  6 14:32:10 2009
@@ -89,11 +89,13 @@
   static MMTkCollectType MMTkTriggerCollection;
 
   void* operator new(size_t sz, VirtualTable *VT) {
+    gc* res = 0;
+    llvm_gcroot(res, 0);
     assert(VT->tracer && "VT without a tracer");
     sz = llvm::RoundUpToAlignment(sz, sizeof(void*));
     uintptr_t Mutator = mvm::MutatorThread::get()->MutatorContext;
     int allocator = MMTkCheckAllocator(Mutator, sz, 0, 0);
-    gc* res = (gc*)MMTkGCAllocator(Mutator, sz, 0, 0, allocator, 0);
+    res = (gc*)MMTkGCAllocator(Mutator, sz, 0, 0, allocator, 0);
     assert(res && "Allocation failed");
     assert(res->getVirtualTable() == 0 && "Allocation not zeroed");
     res->setVirtualTable(VT);





More information about the vmkit-commits mailing list