| Index: polyml/libpolyml/gc_mark_phase.cpp |
| =================================================================== |
| --- polyml/libpolyml/gc_mark_phase.cpp (revision 2008) |
| +++ polyml/libpolyml/gc_mark_phase.cpp (revision 2009) |
| @@ -176,6 +176,16 @@ |
| // Clear the mark stack |
| for (unsigned i = 0; i < MARK_STACK_SIZE; i++) |
| markStack[i] = 0; |
| + // Clear the large object cache. Actually only largeObjectCache[0].base |
| + // needs to be set to zero and for the objects allocated on the heap it is |
| + // cleared before each GC in either MarkRoots or MarkPointersTask. |
| + // The remianing case is the RescanMarked sub-class which is allocated on the stack |
| + // but it doesn't hurt to clear it in all cases. |
| + for (unsigned j = 0; j < LARGECACHE_SIZE; j++) |
| + { |
| + largeObjectCache[locPtr].base = 0; |
| + largeObjectCache[locPtr].current = 0; |
| + } |
| } |
| |
| // Called when the stack has overflowed. We need to include this |