David, in order to test this I changed
debug = mmap( 2147483648U-512*1024*1024, gMaxHeapSize+pageSize
then asked for 600MB of squeak memory. mmap allocated memory for me on the 2GB-512MB boundary, so I then had 88 MB of space over the 2GB boundary. I could work towards.
I'd think if you look at sqUnixMemory.c and fiddle a bit with
if (MAP_FAILED == (heap= mmap(0, heapLimit, MAP_PROT, MAP_FLAGS, devZero, 0)))
you might be able to change the 0 to say.. .
0x7FFFFFFFF0000000
Then ask for 600MB of memory for the image.
That would set the end of memory at 0x8000000015800000 344MB over the negative sign boundary.
Check heap then, it *might* say 0x7FFFFFFFF0000000 if it works as expected. I was able to use this to set the start at 1gb, 1.5gb, 2gb, 3gb on the mac in 32bit mode.
On Jun 9, 2007, at 8:08 AM, David T. Lewis wrote:
Hi John,
Thanks for the feedback. It's good that you've got a fairly repeatable failure scenario. When I did those changes, I was working on a 64 bit machine, and the Squeak heap gets allocated at e.g. 0x2b39e0c5a000, so I would not have been seeing the 2GB boundary on that machine. I guess I should go back to a 32 bit box and reproduce the problem there.
I might not get a chance to look at this further for a couple of weeks though. Right now my pet project is to see if I can get Areithfa Ffenestri working on unix.
Dave
-- ======================================================================== === John M. McIntosh johnmci@smalltalkconsulting.com Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com ======================================================================== ===