don't get confused when expanding over a hole
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1176 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
5f5589e8de
commit
481d9d38fb
@ -12,7 +12,7 @@
|
|||||||
* Last rev: *
|
* Last rev: *
|
||||||
* mods: *
|
* mods: *
|
||||||
* comments: allocating space *
|
* comments: allocating space *
|
||||||
* version:$Id: alloc.c,v 1.64 2004-11-04 18:22:30 vsc Exp $ *
|
* version:$Id: alloc.c,v 1.65 2004-11-17 05:24:20 vsc Exp $ *
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
#ifdef SCCS
|
#ifdef SCCS
|
||||||
static char SccsId[] = "%W% %G%";
|
static char SccsId[] = "%W% %G%";
|
||||||
@ -1396,6 +1396,7 @@ Yap_ExtendWorkSpaceThroughHole(UInt s)
|
|||||||
Yap_hole_start = (ADDR)WorkSpaceTop0;
|
Yap_hole_start = (ADDR)WorkSpaceTop0;
|
||||||
Yap_hole_end = (ADDR)WorkSpaceTop-s;
|
Yap_hole_end = (ADDR)WorkSpaceTop-s;
|
||||||
#endif
|
#endif
|
||||||
|
Yap_ErrorMessage = NULL;
|
||||||
return WorkSpaceTop-WorkSpaceTop0;
|
return WorkSpaceTop-WorkSpaceTop0;
|
||||||
}
|
}
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
@ -1409,6 +1410,7 @@ Yap_ExtendWorkSpaceThroughHole(UInt s)
|
|||||||
WorkSpaceTop = WorkSpaceTop0;
|
WorkSpaceTop = WorkSpaceTop0;
|
||||||
#endif
|
#endif
|
||||||
if (ExtendWorkSpace(s, 0)) {
|
if (ExtendWorkSpace(s, 0)) {
|
||||||
|
Yap_ErrorMessage = NULL;
|
||||||
return WorkSpaceTop-WorkSpaceTop0;
|
return WorkSpaceTop-WorkSpaceTop0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -177,7 +177,6 @@ yapsbrk(long size)
|
|||||||
oldHeapTop = Yap_hole_end;
|
oldHeapTop = Yap_hole_end;
|
||||||
newHeapTop = oldHeapTop+size;;
|
newHeapTop = oldHeapTop+size;;
|
||||||
Yap_hole_start = Yap_hole_end = NULL;
|
Yap_hole_start = Yap_hole_end = NULL;
|
||||||
printf("sbrk past hole %p--%p\n", newHeapTop,H0);
|
|
||||||
}
|
}
|
||||||
if (newHeapTop > HeapLim - MinHeapGap) {
|
if (newHeapTop > HeapLim - MinHeapGap) {
|
||||||
if (HeapTop + size < HeapLim) {
|
if (HeapTop + size < HeapLim) {
|
||||||
|
3
C/grow.c
3
C/grow.c
@ -548,6 +548,7 @@ static_growheap(long size, int fix_code, struct intermediates *cip)
|
|||||||
if (!Yap_ExtendWorkSpace(size)) {
|
if (!Yap_ExtendWorkSpace(size)) {
|
||||||
Int min_size = AdjustPageSize(((CELL)Yap_TrailTop-(CELL)Yap_GlobalBase)+MinHeapGap);
|
Int min_size = AdjustPageSize(((CELL)Yap_TrailTop-(CELL)Yap_GlobalBase)+MinHeapGap);
|
||||||
|
|
||||||
|
Yap_ErrorMessage = NULL;
|
||||||
if (size < min_size) size = min_size;
|
if (size < min_size) size = min_size;
|
||||||
minimal_request = size;
|
minimal_request = size;
|
||||||
size = Yap_ExtendWorkSpaceThroughHole(size);
|
size = Yap_ExtendWorkSpaceThroughHole(size);
|
||||||
@ -981,6 +982,7 @@ execute_growstack(long size0, int from_trail)
|
|||||||
if (!Yap_ExtendWorkSpace(size)) {
|
if (!Yap_ExtendWorkSpace(size)) {
|
||||||
/* make sure stacks and trail are contiguous */
|
/* make sure stacks and trail are contiguous */
|
||||||
|
|
||||||
|
Yap_ErrorMessage = NULL;
|
||||||
minimal_request = AdjustPageSize(((CELL)Yap_TrailTop-(CELL)Yap_GlobalBase)+4*MinHeapGap+size0);
|
minimal_request = AdjustPageSize(((CELL)Yap_TrailTop-(CELL)Yap_GlobalBase)+4*MinHeapGap+size0);
|
||||||
|
|
||||||
size = Yap_ExtendWorkSpaceThroughHole(minimal_request);
|
size = Yap_ExtendWorkSpaceThroughHole(minimal_request);
|
||||||
@ -1240,6 +1242,7 @@ static int do_growtrail(long size)
|
|||||||
execute_growstack(size, TRUE);
|
execute_growstack(size, TRUE);
|
||||||
#else
|
#else
|
||||||
if (!Yap_ExtendWorkSpace(size)) {
|
if (!Yap_ExtendWorkSpace(size)) {
|
||||||
|
Yap_ErrorMessage = NULL;
|
||||||
execute_growstack(size, TRUE);
|
execute_growstack(size, TRUE);
|
||||||
}
|
}
|
||||||
YAPEnterCriticalSection();
|
YAPEnterCriticalSection();
|
||||||
|
Reference in New Issue
Block a user