[squeak-dev] Re: [Sq2.x] primitive 128 #elementsExchangeIdentityWith: fails

Klaus D. Witzel klaus.witzel at cobss.com
Wed Dec 31 20:37:29 UTC 2008

On Wed, 31 Dec 2008 18:57:59 +0100, Andreas Raab wrote:

> If you're running 2.x make sure you actually have enough free space for  
> the operation - I don't recall if we had dynamic memory growth in 2.x  
> and unless you specify sufficient memory the VM will start with a  
> default allocation (don't remember how much) and not grow. If that isn't  
> it, check if you have SmallInts or other objects in there that the VM  
> cannot become - this might simply be a bug in your porting process and  
> may have nothing to do with the become operation.

Lots of directions which I didn't think about, thanks very much for taking  
care Andreas.

Okay: in order to rule out SmallInts etc and also to see if does dynamic  
host mem alloc, I set the debugging/F2 and then repeatedly did

  Smalltalk garbageCollect. ((1 to: 366666) collect: [:m | Object new])
  elementsExchangeIdentityWith: ((1 to: 366666) collect: [:m | Object new])

This causes growth/shrinkage activity (good VM/GC :) albeit the primitive  
fails every 2nd time in a 19.8 MB .image :(

But the primitive fails *constantly* doing the same expression in a  
"fresh"/"clean" 5.51 MB .image :(( and the smaller .image is the one I  
have to use to make the larger one ...

O.K., so, did some more experiments and at the moment it works when  
#elementsExchangeIdentityWith: is performed with up to 64K oops  
(incrementally so to speak). This is needed only during class  
initialization and so I was reluctant to spending better optimized code  
for such a single happening task.

Perhaps the 64K oops approach made it already :) I hope so. I dont' want  
to put "give it memory" into installation instructions (too J-ish for my  
taste ;) and figuring out possible/working language-level GC parameters  
for the 2.x VM is beyond my horizon at the moment.

Thanks again for your good advice, and <de>guten Rutsch ins neue Jahr</de>  


> Cheers,
>    - Andreas
> Klaus D. Witzel wrote:
>> Hi,
>>  I'm backporting code to Squeak2.x and an ivocation of  
>> #elementsExchangeIdentityWith: which works fine with some 117k  
>> elements, fails under the Squeak2.x VM :(
>>  Searched the list archive to no avail. Was there something in the  
>> past, a limit on the # of elements? What directions can there be  
>> towards a solution, TIA.
>>  /Klaus

"If at first, the idea is not absurd, then there is no hope for it".  
Albert Einstein

More information about the Squeak-dev mailing list