VM Maker: VMMaker-dtl.241.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: VMMaker-dtl.241.mcz

squeak-dev-noreply
 
Dave Lewis uploaded a new version of VMMaker to project VM Maker:
http://www.squeaksource.com/VMMaker/VMMaker-dtl.241.mcz

==================== Summary ====================

Name: VMMaker-dtl.241
Author: dtl
Time: 27 June 2011, 10:18:20 am
UUID: d8cf8a28-cb6e-4827-8765-d072c7e384df
Ancestors: VMMaker-dtl.240

VMMaker 4.5.5
 
Integrate Igor's fix from http://code.google.com/p/cog/issues/detail?id=46.

This change is adapted from NewObjectMemory>>sufficientSpaceAfterGC: in VMMaker.oscog-eem.86 and is intended to address object memory expansion problems noted on Windows.

Background from <http://code.google.com/p/cog/issues/detail?id=46

Reported by project member siguctua, Today (4 hours ago)

Hello, remember the problem Tudor has on Win32.
I tracked it down to the #sufficientSpaceAfterGC: method.
It looks like it miscalculating the amount of required space , because the check

        self oop: freeStart + minFree + 15000 isLessThan: reserveStart

fails after growing the memory.

So, instead of failing (and consequently raising a low-space condition), i placed the loop in allocation procedure to query even more memory from platform side , until condition will be fulfilled or no extra memory available , and then we naturally fail.

I modified source files to trace memory allocation requests, and here what they producing.
Before change:

max available memory space: 1073741824 , reserved now: 422965248
allocated extra memory: 4198400 , total: 427163648
allocated extra memory: 4198400 , total: 431362048
allocated extra memory: 4198400 , total: 435560448
allocated extra memory: 4198400 , total: 439758848

After change:

max available memory space: 1073741824 , reserved now: 422965248
allocated extra memory: 4214784 , total: 427180032
allocated extra memory: 4214784 , total: 431394816
allocated extra memory: 4214784 , total: 435609600
allocated extra memory: 4214784 , total: 439824384
sqMemoryExtraBytesLeft returns: 633917440
allocated extra memory: 5914624 , total: 445739008

As you can see, the VM without fix fails at 4th memory allocation request,
but as it shown below, there are plenty of memory space available, and problem is not in insufficient space but in calculating the requested memory size >> and comparing with wrong desired space after allocating it.
The loop just heals this issue.