From d024e9f0ae8ee6227a457b73ccc85df5bcb2f837 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Thu, 20 Jan 2011 11:59:54 -0600 Subject: [PATCH] ask YAP to get memory step by step in 64 bit maachines. --- C/alloc.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/C/alloc.c b/C/alloc.c index 98ae23471..a0b0fe53b 100755 --- a/C/alloc.c +++ b/C/alloc.c @@ -1595,15 +1595,29 @@ Yap_ExtendWorkSpaceThroughHole(UInt s) WorkSpaceTop = WorkSpaceTop0; return -1; } +#endif +#elif SIZEOF_INT_P==8 + { + int n = 1024*1024; + while (n) { + /* progress 1 MB */ + WorkSpaceTop += 512*1024; + if (ExtendWorkSpace(s, MAP_FIXED)) { + Yap_add_memory_hole((ADDR)WorkSpaceTop0, (ADDR)WorkSpaceTop-s); + Yap_ErrorMessage = NULL; + return WorkSpaceTop-WorkSpaceTop0; + } +#if defined(_WIN32) + /* 487 happens when you step over someone else's memory */ + if (GetLastError() != 487) { + WorkSpaceTop = WorkSpaceTop0; + return -1; + } +#endif + } #endif } WorkSpaceTop = WorkSpaceTop0; -#endif - if (ExtendWorkSpace(s, 0)) { - Yap_add_memory_hole((ADDR)WorkSpaceTop0, (ADDR)WorkSpaceTop-s); - Yap_ErrorMessage = NULL; - return WorkSpaceTop-WorkSpaceTop0; - } #endif return -1; }