[Vm-dev] Re: Why is the method context size fixed to two magical numbers

Max Leske maxleske at gmail.com
Thu Jul 7 17:29:37 UTC 2016


Thanks Clément, that explains it.


> On 07 Jul 2016, at 13:52, vm-dev-request at lists.squeakfoundation.org wrote:
> 
> Hi,
> 
> In the interpreter VM, contexts are recycled and you have 2 pools of
> contexts, one for each size. Contexts represent 30% of allocations in that
> VM.
> 
> In the Stack and Cog VM, the size is used to detect stack page overflow and
> to allocate contexts, we could use a precise value instead of this bit
> flag. Using a single bit saves memory as you need 1 bit per compiled method
> instead of 1 byte (or even 1 word !).
> 
> Cheers
> 
> On Thu, Jul 7, 2016 at 1:02 PM, Max Leske <maxleske at gmail.com <mailto:maxleske at gmail.com>> wrote:
> 
>> 
>> Hi,
>> 
>> I’ve been looking at the code that creates new method contexts (in the
>> image and in the VM) and I can’t figure out why it would be beneficial to
>> fix the size of the context to (currently) 16 (22) or 56 (62) bytes.
>> Clément says in one of his blog entries that this if for performance
>> reasons but I don’t see where the performance gain is (the Bluebook doesn’t
>> mention this either). At allocation time the VM simply takes the number of
>> bytes to allocate from the “large context flag”. Maybe the performance gain
>> comes from the idea that the size does not have to be calculated? But then
>> I ask: why not simply store the frame size instead of this weird flag?
>> 
>> Cheers,
>> Max

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20160707/3c993cab/attachment.htm


More information about the Vm-dev mailing list