[squeak-dev] The Trunk: Compiler-ar.108.mcz

Igor Stasenko siguctua at gmail.com
Tue Dec 22 21:12:02 UTC 2009

2009/12/22 Eliot Miranda <eliot.miranda at gmail.com>:
> On Tue, Dec 22, 2009 at 5:41 AM, Nicolas Cellier
> <nicolas.cellier.aka.nice at gmail.com> wrote:
>> Why does this depend on interactive ?
>>       method := self interactive ifTrue: [    methodNode
>> generateWithTempNames ]
>>               ifFalse: [methodNode generate].
>> Nicolas
> The assumption is that one wants temp names preserved in doits, but is not
> particularly interested in temp names in automatic compiles.  Essentially
> the system is in two modes.  One, with source, does not preserve temp names
> except for doits because the temp names are in the sources files.  The
> other, without sources, converts all methods to sourceless with encoded temp
> names.  But this isn't yet reflected in the code.  The code would better
> read something like
>       method := (self interactive or: [self noSourcesFiles])
>                       ifTrue: [methodNode generateWithTempNames]
>                       ifFalse: [methodNode generate]
> and of course (self interactive or: [self noSourcesFiles]) could be
> extracted into e.g. a class-side method on CompiledMethod or Compiler such
> as
> encodeTempNames: isInteractive
>     ^interactive or: [SourceFiles isNil]

ideally, the decision what to do should be delegated to aRequestor, so
code may be something like:

method := methodNode generate: (aRequestor methodTrailerFor: methodNode)

Meanwhile i made own version of Compiler>>evaluate: textOrStream in:
aContext to: receiver notifying: aRequestor ifFail: failBlock logged:

which saving a full source code of doit in trailer, if its interactive.

so evaluating given code:
" doing this"

thisContext method getSource


" doing this"

thisContext method getSource

if you find this useful, i could push change to trunk.

Best regards,
Igor Stasenko AKA sig.

More information about the Squeak-dev mailing list