[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