VM & Runtime stack

Mathieu Suen mathk.sue at gmail.com
Mon Jul 16 23:26:19 UTC 2007


Actualy not when a precess switch occure or not when thisContext is  
used.
But is true that the from now the block need to push the context and  
this bytecode flush the context cache.
This is not a good things since the context may not be used inside  
the block.
The only case when the context shouldn't be recycle is when the block  
is pass as a return value or assign to an inst var,class var,  global  
var....

This because:
  MethodContext goes to the cache when the VM return from the method.
The BlockContext have a reference to the MethodContext

But there is some block where the context aren't push on the stack.
Actually is for special send that are inlined (#to:do:,  
#ifTrue:ifFalse: #caseOf: and so on) so block aren't created.

	Mth



On Jul 16, 2007, at 4:04 PM, Klaus D. Witzel wrote:

> FWIW, over in the newcompiler list we recently discussed various  
> implementation details, from the new compiler down to the VM level,  
> of full BlockClosures. It turned out that as soon as BlockClosures  
> receive full (performant) support from the VM then breaking the  
> recycleable context rule no longer occurs and recycling can happen  
> 100%[tm].




More information about the Squeak-dev mailing list