More fun with VMs
stéphane ducasse
ducasse at iam.unibe.ch
Fri Mar 24 09:11:55 UTC 2006
Tx
On 23 mars 06, at 19:44, Hans-Martin Mosner wrote:
> stéphane ducasse wrote:
>
>> Hi
>>
>> I wanted to know how this was relating to the way VW treats
>> blocks: clean block [:each | each zork], copy blocks and full
>> blocks.
>> Does anybody able to compare?
>
> These are different things. The optimized blocks in VW still
> require full context activations, they just avoid issues with
> references to their creating context:
> A clean block is completely independent of its context, so VW
> creates the block at compile time and stores it in the literal
> frame of the method.
> A copying block needs some values from the context which are known
> not to be changeable after the block has been created (method
> receiver and arguments and variables which are never assigned to
> after the block's creation), so these values can be copied into the
> newly created block, but the block does not need a reference to its
> creating context, so that context does not have to be stabilized
> when the method returns.
> A full block needs a reference to its context, either because it
> contains a return or because it reads variables which may change
> after its creation, or writes into temporaries outside of its own
> scope.
>
> In contrast, Dan's scheme does not deal with blocks but activations
> in general, and it tries to avoid creating a stack frame if
> possible. IMO it is an optimization that should be investigated.
>
> Cheers,
> Hans-Martin
>
More information about the Squeak-dev
mailing list
|