Well follow the instructions to build a unix VM.
At the point where you use VMMaker to make the VM ensure you go to Mac OS/vm/specialChangeSets and load
ArraysToGlobalStruct-JMM.1.cs May already be in image, check source. bigCursor-bf.1.cs JMM-fixBiasToGrow.1.cs.zip VMM38-64bit-imageUpdates.1.cs May already be in image, check source. VMM38-gc-instrument-image.1.cs May already be in image, check source. VmUpdates-dtl VmUpdates-1001-dtl.1.cs VmUpdates-1002-dtl.1.cs VmUpdates-1003-dtl.1.cs VmUpdates-1004-dtl.1.cs VmUpdates-1005-dtl.1.cs VmUpdates-1006-dtl.1.cs JMM-VmUpdates32bitclean.2.cs
For 64bit work no idea, wasn't there some issue with fixes needed to build it anyway?
Once the VM is build to test I suggest you look at the call to mmap in the unix memory allocation source sqUnixMemory.c and set the start location from zero to say 1.5GB, then startup your VM and ask for 600MB of memory. In uxGrowMemoryBy look at the value for heap + heapSize to see where the heap ends to ensure your choices are correct.
I then downloaded a 3.5 image since it contains the macrobenchmarks, and ran
| suck | suck := OrderedCollection new. suck add: (ByteArray new: 1024*1024*480). 97 timesRepeat: [ Smalltalk macroBenchmarks. suck add: (ByteArray new: 1024*1024*1). Transcript show: Smalltalk garbageCollectMost;cr. Transcript show: Smalltalk garbageCollect;cr].
By adjust the 1024*1024*480) you want to put the entire active vm memory heap under the 2GB boundary, then the timesRepeat: loop allocates memory and runs the benchmarks to cross over the boundary. Modifications, using a smaller value for 1024*1024*1, really this should be 4 bytes in order to march over the boundary in more possible conditions however running it would require on the order of 4 million iterations. Maybe someone could devote a week and run with a 4K allocation.
As mentioned earlier
I have not tested 64bit VMs at the 0x8000000000000000 boundary. I suspect you could allocate at the 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, adjusting the initial memory allocation to find the boundary.
The other two test cases are the image below the 2gb boundary, which should be the first couple of running benchmarks for the VM, and the VM fully over the 2GB boundary which can be set by adjust mmap to say 3GB.
On Jun 10, 2007, at 3:21 AM, Damien Cassou wrote:
2007/6/10, John M McIntosh johnmci@smalltalkconsulting.com:
(c) I have not confirmed the changes work with the Unix VM, or the Windows VM, I have no plans to do so.
What can we do to test the unix vm?
-- Damien Cassou
-- ======================================================================== === John M. McIntosh johnmci@smalltalkconsulting.com Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com ======================================================================== ===