summaryrefslogtreecommitdiff
path: root/dev-lang/polyml/files/polyml-5.5.2-r2007_Ensure_the_large_object_cache_pointer_is_cleared.patch
blob: 36c82947f37b1bed5d56e0bbf3c0cbdae2b3fdf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Index: polyml/libpolyml/gc_mark_phase.cpp
===================================================================
--- polyml/libpolyml/gc_mark_phase.cpp	(revision 2006)
+++ polyml/libpolyml/gc_mark_phase.cpp	(revision 2007)
@@ -130,13 +130,6 @@
                     if (locPtr == LARGECACHE_SIZE) locPtr = 0;
                     largeObjectCache[locPtr].base = obj;
                     largeObjectCache[locPtr].current = currentPtr;
-                    // To try to narrow down a bug that results in the ASSERT failing,
-                    // add these extra checks.
-                    POLYUNSIGNED lengthWord = obj->LengthWord();
-                    ASSERT (OBJ_IS_LENGTH(lengthWord));
-                    POLYUNSIGNED length = OBJ_OBJECT_LENGTH(lengthWord);
-                    ASSERT(length == originalLength);
-                    ASSERT(currentPtr > (PolyWord*)obj && currentPtr < ((PolyWord*)obj)+length);
                 }
             }
             else StackOverflow(obj);
@@ -579,6 +572,8 @@
     ASSERT(nInUse == 0);
     MTGCProcessMarkPointers *marker = &markStacks[0];
     marker->active = true;
+    marker->locPtr = 0;
+    marker->largeObjectCache[0].base = 0;
     nInUse = 1;
 
     // Scan the permanent mutable areas.