Hi,

My, possibly wrong, understanding is that it is fixed if you get a 
somewhat recent version of vm-maker.  It's the lack of a '.' in
a method.

The problem seems to be that Ian, the generator of the unix vm, uses
and older vm-maker.  I don't know why this would be, but, surely he 
has his reasons.

A simple fix is:

The code is (from the gnu-interp.c file, though interp.c is the same):          
                                             
                                                                                
                                             
                if (((((usqInt) ((longAt(foo->freeBlock)) & AllButTypeMask))) < 
(((usqInt) foo->growHeadroom))) &&           
+(foo->gcBiasToGrow > 0)) {                                                     
                                             
                        /* begin biasToGrow */                                  
                                             
/* HERE's the new line! */
           growSize = (((sqInt) (foo->growHeadroom * 3) >> 1)) - ((longAt(foo-
 >freeBlock)) & AllButTypeMask);
                        /* begin growObjectMemory: */                           
                                             
                        foo->statGrowMemory += 1;                               
                                             
                        limit = sqGrowMemoryBy(foo->memoryLimit, growSize);     
                                             
                        if (!(limit == foo->memoryLimit)) {                     
                                             
                                foo->memoryLimit = limit - 24;                  
                                             
                                initializeMemoryFirstFree(foo->freeBlock);      
                                             
                        }                                                       
                                             
                        weDidGrow = 1;                                          
                                             
                }                                                               
  

and all should be good.  The problem is that growSize isn't set, and, newer 
versions 
gcc seem to set it to 0, rather than some random number not 0.  

If the above code doesn't work justset growSize to something, say, 50000000 
should 
do the job.  Ie, each grow would be 50meg.

cheers

bruce

On Wed, Mar 04, 2009 at 04:21:07PM +0100, Damien Cassou wrote:
> On Wed, Mar 4, 2009 at 4:17 PM, Bruce O'Neel <[email protected]> wrote:
> > If you want to patch your linux VM and rebuild from source I can
> > tell you where to fix it.
> 
> Why not, but I would prefer to see the bug fixed in svn. Do you know
> why it isn't there already?
> 
> -- 
> Damien Cassou
> http://damiencassou.seasidehosting.st
> 
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to