[vmkit-commits] [vmkit] r85801 - in /vmkit/trunk/lib/Mvm/GCMmap2: MvmGC.h gc.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Mon Nov 2 01:30:20 PST 2009
Author: geoffray
Date: Mon Nov 2 03:30:19 2009
New Revision: 85801
URL: http://llvm.org/viewvc/llvm-project?rev=85801&view=rev
Log:
Add some asserts to ensure the precise tracer is correct.
Modified:
vmkit/trunk/lib/Mvm/GCMmap2/MvmGC.h
vmkit/trunk/lib/Mvm/GCMmap2/gc.cpp
Modified: vmkit/trunk/lib/Mvm/GCMmap2/MvmGC.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/GCMmap2/MvmGC.h?rev=85801&r1=85800&r2=85801&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/GCMmap2/MvmGC.h (original)
+++ vmkit/trunk/lib/Mvm/GCMmap2/MvmGC.h Mon Nov 2 03:30:19 2009
@@ -281,12 +281,19 @@
static inline void markAndTraceRoot(void *ptr) {
void* obj = *(void**)ptr;
- GCChunkNode *node = o2node(obj);
+ if (obj) {
+ GCChunkNode *node = o2node(obj);
+
+#ifdef WITH_LLVM_GCC
+ assert(node && "No node in precise mode");
+ assert(obj == begOf(obj) && "Interior pointer");
+#endif
- if(node && !isMarked(node)) {
- mark(node);
- node->remove();
- node->prepend(used_nodes);
+ if(node && !isMarked(node)) {
+ mark(node);
+ node->remove();
+ node->prepend(used_nodes);
+ }
}
}
Modified: vmkit/trunk/lib/Mvm/GCMmap2/gc.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/GCMmap2/gc.cpp?rev=85801&r1=85800&r2=85801&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/GCMmap2/gc.cpp (original)
+++ vmkit/trunk/lib/Mvm/GCMmap2/gc.cpp Mon Nov 2 03:30:19 2009
@@ -31,6 +31,7 @@
GCChunkNode *node = o2node(obj);
#ifdef WITH_LLVM_GCC
+ assert(begOf(obj) == obj && "Interior pointer\n");
assert(node && "No node in precise GC mode");
#endif
More information about the vmkit-commits
mailing list