2014-10-27 16:22 GMT+01:00 Clément Bera <[email protected]>:

> Hey guys,
>
> I was discussing about methods like that with Marcus:
>
> MyClass>>foo
> #(false) first
> ifFalse: [
> 'first call since compilation' logCr.
> #(false) at: 1 put: true ]
> ifTrue: [ 'other calls' logCr ]
>

What, you can do that?


>
> DoIt:
> 4 timesRepeat: [MyClass new foo ]
>
> Transcript:
> 'first call since compilation'
> 'other calls'
> 'other calls'
> 'other calls'
>
> In the sista image/VM, we are most probably going with Eliot to implement
> a slow path when you edit the literal of a method (deoptimizing the method)
> so we can consider that the literals are immutable in the generic case (and
> if it's not true, execution falls back to a slow path).
>
> But I was thinking, does it worth it to implement the slow path ?
> Couldn't we just put literals as immutable all the time ?
>

I would do that, yes.


> The methods as the one shown before would not work any more. But does
> someone use it ?
>

I could imagine cases where, in very tight memory situations or with very
very large literals, we could make use of modifying literals. But I'm not
sure this is a significant requirement, or that it couldn't be considered
if there is a significant (and rich) use case to fund the development of
the slow path.

Is there a critic rule catching that sort of thing? That we could run on
Squeaksource / Smalltalkhub?

Thierry


>
> ...
>
>

Reply via email to