[vmkit-commits] [vmkit] r108835 - /vmkit/trunk/lib/Mvm/Runtime/Object.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue Jul 20 07:00:42 PDT 2010


Author: geoffray
Date: Tue Jul 20 09:00:41 2010
New Revision: 108835

URL: http://llvm.org/viewvc/llvm-project?rev=108835&view=rev
Log:
Update the forwarded reference, not the old reference.


Modified:
    vmkit/trunk/lib/Mvm/Runtime/Object.cpp

Modified: vmkit/trunk/lib/Mvm/Runtime/Object.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/Object.cpp?rev=108835&r1=108834&r2=108835&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/Object.cpp (original)
+++ vmkit/trunk/lib/Mvm/Runtime/Object.cpp Tue Jul 20 09:00:41 2010
@@ -202,12 +202,14 @@
     gc* reference, VirtualMachine* vm, uintptr_t closure) {
   if (!Collector::isLive(reference, closure)) {
     vm->clearReferent(reference);
-    return 0;
+    return NULL;
   }
 
   gc* referent = *(vm->getReferentPtr(reference));
 
-  if (!referent) return 0;
+  if (!referent) {
+    return NULL;
+  }
 
   if (semantics == SOFT) {
     // TODO: are we are out of memory? Consider that we always are for now.
@@ -218,16 +220,16 @@
     // Nothing to do.
   }
 
+  gc* newReference =
+      mvm::Collector::getForwardedReference(reference, closure);
   if (Collector::isLive(referent, closure)) {
     gc* newReferent = mvm::Collector::getForwardedReferent(referent, closure);
-    gc* newReference =
-      mvm::Collector::getForwardedReference(reference, closure);
     vm->setReferent(newReference, newReferent);
     return newReference;
   } else {
-    vm->clearReferent(reference);
-    vm->addToEnqueue(reference);
-    return 0;
+    vm->clearReferent(newReference);
+    vm->addToEnqueue(newReference);
+    return NULL;
   }
 }
 





More information about the vmkit-commits mailing list