[squeak-dev] CurrenReadOnlySourceFiles (was: Re: Question about inlining | How to access named temps in FullBlockClosure?)

Levente Uzonyi leves at caesar.elte.hu
Mon Mar 30 21:21:42 UTC 2020

Hi Eliot,

On Mon, 30 Mar 2020, Eliot Miranda wrote:

> Well, that's not what I meant by a search.  However, as Levente pointed out, textual searches should be surrounded with CurrentReadOlySouceFiles cacheDuring:.  I think this is an awful implementation and would implement it
> very differently but that's the work-around we have in place now,

How would you implement it?

When I introduced CurrentReadOnlySourceFiles, I wanted to solve the 
issue of concurrent access to the source files.
I had the following options:
1) controlled access to a shared resource (a single read-only copy of the 
SourceFiles array) with e.g. a Monitor
2) same as 1) but with multiple copies pooled
3) exceptions to define the scope and lifetime of the resources (the 
read-only copies) within a process

I chose the third option because it was possible to introduce it without 
exploring and rewriting existing users: you could leave all code as-is
and sprinke CurrentReadOnlySourceFiles cacheDuring: [ ... ] around code 
that needed better performance.
It's obviously not a perfect solution, but I still think it was the best 
available at the time.

Later ProcessLocalVariables were added to Trunk. Which could be used to 
solve the concurrent access issue by using process-local copies of the 
source files. The only challenge is to release them after they are not 
needed any more. Perhaps a high priority process could do that after a 
few minutes of inactivity. Or we could just let them linger and see if 
they cause any problems.


More information about the Squeak-dev mailing list