[vmkit-commits] [vmkit] r85584 - /vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Fri Oct 30 02:20:31 PDT 2009


Author: geoffray
Date: Fri Oct 30 04:20:31 2009
New Revision: 85584

URL: http://llvm.org/viewvc/llvm-project?rev=85584&view=rev
Log:
Bugfix when setting the available byte.


Modified:
    vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp

Modified: vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp?rev=85584&r1=85583&r2=85584&view=diff

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp Fri Oct 30 04:20:31 2009
@@ -45,9 +45,12 @@
 }
 
 extern "C" void Java_org_j3_mmtk_ObjectModel_writeAvailableByte__Lorg_vmmagic_unboxed_ObjectReference_2B (JavaObject* OM, JavaObject* obj, uint8_t val) {
+  assert((val & mvm::GCMask) == val && "GC bits do not fit");
 #if defined(__PPC__)
+  ((uint8_t*)obj)[7] &= ~mvm::GCMask;
   ((uint8_t*)obj)[7] |= val;
 #else
+  ((uint8_t*)obj)[4] &= ~mvm::GCMask;
   ((uint8_t*)obj)[4] |= val;
 #endif
 }
@@ -64,6 +67,8 @@
 Java_org_j3_mmtk_ObjectModel_attemptAvailableBits__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Word_2Lorg_vmmagic_unboxed_Word_2(
     JavaObject* OM, JavaObject* obj, intptr_t oldValue, intptr_t newValue) {
   
+  assert(((oldValue & ~mvm::GCMask) == (newValue & ~mvm::GCMask)) &&
+         "GC bits do not fit");
   return __sync_bool_compare_and_swap(((intptr_t*)obj) + 1, oldValue, newValue);
 }
 





More information about the vmkit-commits mailing list