[Vm-dev] Why spaceOkay test needed?

Andreas Raab andreas.raab at gmx.de
Mon Aug 20 16:37:41 UTC 2007


Adrian Lienhard wrote:
> 
> Out of curiosity, does anybody know why in...
> 
> primitiveNew
>     "Allocate a new fixed-size instance. Fail if the allocation would 
> leave less than lowSpaceThreshold bytes free. May cause a GC"
>     | class spaceOkay |
>     class := self stackTop.
>     "The following may cause GC!"
>     spaceOkay := self sufficientSpaceToInstantiate: class indexableSize: 0.
>     self success: spaceOkay.
>     successFlag ifTrue: [ self push: (self instantiateClass: self 
> popStack indexableSize: 0) ]
> 
> ... there is the call to #sufficientSpaceToInstantiate:indexableSize: 
> although #instantiateClass:indexableSize: also indirectly calls 
> #sufficientSpaceToAllocate:?

Where does it do that?

> Both, the primitive fallback code and the vm code signal the low space 
> sem in case of failure.

The fallback code in the image is broken IMO. It needs to signal 
OutOfMemory instead of the low space semaphore. We had our servers go 
belly-up because of malformed requests that requested a 1 gigabyte or 
more memory.

Cheers,
   - Andreas


More information about the Vm-dev mailing list