[Vm-dev] Why spaceOkay test needed?

Mathieu Suen mathk.sue at gmail.com
Thu Aug 23 22:52:29 UTC 2007


So #sufficientSpaceToInstantiate:indexableSize: call can be removed?

	Mth



On Aug 20, 2007, at 6:37 PM, Andreas Raab wrote:

> 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