[squeak-dev] MNU: Parser >> #contents
Bob Arning
arning315 at comcast.net
Wed Sep 25 13:31:29 UTC 2013
Are you able to tell what's in the script he's running simply from the
stack trace? Or some other way?
Cheers,
Bob
On 9/25/13 9:12 AM, Nicolas Cellier wrote:
> The problem is that the script you evaluate will update the Compiler...
> New updates will remove unused variables before the script is finished...
> I tried to solve the problem by introducing an intermediate step:
> - 1) publish the modified methods in an update.mcm (I reintroduced the
> missing vars)
> - 2) only then remove the inst. var.
> (See the recent serie of Compiler versions 270->274
>
> This did not solve anything because there are always cases when you
> launch the script from an older image (typically from Squeak 4.4, 4.3
> or even older)
> The same old Compiler instance is used during all the process and it
> must be unmodified during the process, otherwise, undefined behavior
> (SEGV included)...
>
> I see one way to workaround this:
> 1) clone the Compiler class
> 2) instantiate the clone
> 3) let the clone evaluate
>
> In fact, to be safer we should clone the whole hierarchy, but you
> could 1st try simply with Compiler...
>
>
> 2013/9/25 Bob Arning <arning315 at comcast.net
> <mailto:arning315 at comcast.net>>
>
> Just type
>
> PositionableStream>>#fileInAnnouncing:
>
> and explore it. Look for the literal pointing to the compiler
> (literal8 here). Toggle that open and toggle open the value. Look
> at the instanceVariables - does it still have sourceStream?
>
> As to the explorer, did you open one? Is it still open? (The
> PointerFinder says it is) Could it have been open when the image
> was last saved?
>
>
> Also, you could do
>
> Behavior allSubInstances select: [ :e | (e asString findString:
> 'Compiler') > 0]
>
> Do you get: an OrderedCollection(ClosureCompilerTest CompilerTest
> CompilerExceptionsTest CompilerNotifyingTest
> CompilerSyntaxErrorNotifyingTest Compiler ClosureCompilerTest
> class CompilerTest class CompilerExceptionsTest class
> CompilerNotifyingTest class CompilerSyntaxErrorNotifyingTest class
> Compiler class)
>
>
> Cheers,
> Bob
>
> On 9/25/13 7:31 AM, Frank Shearar wrote:
>> I don't know how I would do that. The bytecode just says pushLit: Compiler.
>>
>> But if I say Compiler allInstances collect: [:c | c instVarNamed:
>> 'cue'] I see {nil . a CompilationCue . a CompilationCue}. That first
>> one's a problem! Further, my image has an ObjectExplorer (!) hanging
>> onto that Compiler, coming from I don't know where.
>>
>> frank
>>
>> On 25 September 2013 11:53, Bob Arning<arning315 at comcast.net> <mailto:arning315 at comcast.net> wrote:
>>> If you inspect
>>>
>>> PositionableStream>>#fileInAnnouncing:
>>>
>>> and look at the literal for Compiler, does it look to be pointing to the new
>>> or old Compiler?
>>>
>>> Cheers,
>>> Bob
>>>
>>> On 9/25/13 6:12 AM, Frank Shearar wrote:
>>>
>>> I'm running with Compiler-nice.274.
>>>
>>> What's weirder is in that top stack frame (Compiler >>
>>> #evaluate:in:to:notifying:ifFailed:logged: the following all show up
>>> as red, because they're references to instvars that don't exist:
>>> class, sourceStream, context, requestor.
>>>
>>> That's because the CompiledMethod that's running is not actually the
>>> right CompiledMethod! It's from some ancient pre-CompilationCue
>>> Compiler instance. Or at least so I suspect because that Compiler
>>> instance has a nil 'cue' instvar.
>>>
>>> If it helps, the PointerFinder says this of the offending context:
>>>
>>> globals: Environment
>>> declarations: IdentityDictionary
>>> #World -> PasteUpMorph
>>> submorphs: Array
>>> 1: SystemWindow
>>> model: ObjectExplorer
>>> currentSelection: ObjectExplorerWrapper
>>> item: CompiledMethod
>>>
>>> In contrast, PointerFinder on: (Compiler >>
>>> #evaluate:in:to:notifying:ifFail:logged:) says:
>>>
>>> CLASS: SmalltalkImage class
>>> superclass: Object class
>>> subclasses: Array
>>> 445: Compiler class
>>> methodDict: MethodDictionary
>>> array: Array
>>> 39: CompiledMethod.
>>>
>>>
>>>
>>>
>>>
>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20130925/66082f16/attachment.htm
More information about the Squeak-dev
mailing list
|