Bulat Ziganshin wrote:
the following still remains true:
another strange thing is what under win32 (and only win32) without
"+RTS -M" option we are restricted to 256 Mbytes of heap. see at this
code:
if ( (base_non_committed == 0) || (next_request + size > end_non_committed) ) {
if (base_non_committed) {
/* Tacky, but if no user-provided -M option is in effect,
* set it to the default (==256M) in time for the heap overflow PSA.
*/
if (RtsFlags.GcFlags.maxHeapSize == 0) {
RtsFlags.GcFlags.maxHeapSize = size_reserved_pool / BLOCK_SIZE;
}
heapOverflow();
}
i think it must be:
if ( (base_non_committed == 0) || (next_request + size > end_non_committed) ) {
if (base_non_committed && RtsFlags.GcFlags.maxHeapSize) {
heapOverflow();
}
It looks like freeAllMBlocks() wouldn't work properly if more than one
256Mb chunk was allocated, because we don't remember the location of
previous chunks.
Have you tried this? Does it work, apart from freeAllMBlocks()?
Cheers,
Simon
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc