Startup description of the problem

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Startup description of the problem

Stéphane Ducasse
Here is the reason why Clipboard was not well initialized and the general problem with the startup list if we execute Smalltalk initialize :)

in the startup list not complete (and cannot really because other classes may dynamically register themselves)
SmalltalkImage>>initializeStartUpList
        "SmalltalkImage initializeStartUpList"

        | oldList |
        oldList := StartUpList.
        StartUpList := OrderedCollection new.
        "These get processed from the top down..."
        #(
                Delay
                DisplayScreen
                Cursor
                InputEventFetcher
                ProcessorScheduler  "Starts low space watcher and bkground."
                LanguageEnvironment
                FileDirectory  "Enables file stack dump and opens sources."
                NaturalLanguageTranslator
                ShortIntegerArray
                ShortRunArray
                CrLfFileStream
        ) do:[:clsName|
                Smalltalk at: clsName ifPresent:[:cls| Smalltalk addToStartUpList: cls].
        ].
        oldList ifNotNil: [oldList do: [:className | Smalltalk at: className
                                                ifPresent: [:theClass | Smalltalk addToStartUpList: theClass]]].
        #(
                PasteUpMorph
                "ControlManager"
        ) do:[:clsName|
                Smalltalk at: clsName ifPresent:[:cls| Smalltalk addToStartUpList: cls].
        ].
               

Now if we check the classes that have a addToStartUpList: call and that are not in the previous list.
We see that we missed a lot of them.

classes := ((SystemNavigation default allCallsOn: #addToStartUpList:)
collect: [ :e | e methodClass ]),
((SystemNavigation default allCallsOn: #addToStartUpList:after:)
collect: [ :e | e methodClass ]).
classNames := classes collect: [ :n | n instanceSide name ].
(Smalltalk class classVarNamed: 'StartUpList') do: [ :s |
        classNames remove: s ifAbsent: [] ].
classNames asSortedCollection


a SortedCollection(#AutoStart #CPUWatcher #Clipboard #CommandHistory #ExternalSettings #FreeTypeFontProvider #FreeTypeSettings #HostSystemMenus #HostWindowProxy #InputEventSensor #InternetConfiguration #Locale #MenuIcons #MultiByteFileStream #OSPlatform #ProcessBrowser #SecurityManager #SmalltalkImage #SmalltalkImage #SystemDictionary #SystemDictionary #UITheme #UUIDGenerator #WeakArray).

InputEventSensor has startup and shutdown but no initialize



Stef
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Startup description of the problem

Alexandre Bergel
Well caught!

Alexandre


On 13 Mar 2010, at 15:20, Stéphane Ducasse wrote:

> Here is the reason why Clipboard was not well initialized and the  
> general problem with the startup list if we execute Smalltalk  
> initialize :)
>
> in the startup list not complete (and cannot really because other  
> classes may dynamically register themselves)
> SmalltalkImage>>initializeStartUpList
> "SmalltalkImage initializeStartUpList"
>
> | oldList |
> oldList := StartUpList.
> StartUpList := OrderedCollection new.
> "These get processed from the top down..."
> #(
> Delay
> DisplayScreen
> Cursor
> InputEventFetcher
> ProcessorScheduler  "Starts low space watcher and bkground."
> LanguageEnvironment
> FileDirectory  "Enables file stack dump and opens sources."
> NaturalLanguageTranslator
> ShortIntegerArray
> ShortRunArray
> CrLfFileStream
> ) do:[:clsName|
> Smalltalk at: clsName ifPresent:[:cls| Smalltalk addToStartUpList:  
> cls].
> ].
> oldList ifNotNil: [oldList do: [:className | Smalltalk at: className
> ifPresent: [:theClass | Smalltalk addToStartUpList: theClass]]].
> #(
> PasteUpMorph
> "ControlManager"
> ) do:[:clsName|
> Smalltalk at: clsName ifPresent:[:cls| Smalltalk addToStartUpList:  
> cls].
> ].
>
>
> Now if we check the classes that have a addToStartUpList: call and  
> that are not in the previous list.
> We see that we missed a lot of them.
>
> classes := ((SystemNavigation default allCallsOn: #addToStartUpList:)
> collect: [ :e | e methodClass ]),
> ((SystemNavigation default allCallsOn: #addToStartUpList:after:)
> collect: [ :e | e methodClass ]).
> classNames := classes collect: [ :n | n instanceSide name ].
> (Smalltalk class classVarNamed: 'StartUpList') do: [ :s |
> classNames remove: s ifAbsent: [] ].
> classNames asSortedCollection
>
>
> a SortedCollection(#AutoStart #CPUWatcher #Clipboard #CommandHistory  
> #ExternalSettings #FreeTypeFontProvider #FreeTypeSettings  
> #HostSystemMenus #HostWindowProxy #InputEventSensor  
> #InternetConfiguration #Locale #MenuIcons #MultiByteFileStream  
> #OSPlatform #ProcessBrowser #SecurityManager #SmalltalkImage  
> #SmalltalkImage #SystemDictionary #SystemDictionary #UITheme  
> #UUIDGenerator #WeakArray).
>
> InputEventSensor has startup and shutdown but no initialize
>
>
>
> Stef
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Startup description of the problem

Alexandre Bergel
In reply to this post by Stéphane Ducasse
Well caught!

Alexandre


On 13 Mar 2010, at 15:20, Stéphane Ducasse wrote:

> Here is the reason why Clipboard was not well initialized and the  
> general problem with the startup list if we execute Smalltalk  
> initialize :)
>
> in the startup list not complete (and cannot really because other  
> classes may dynamically register themselves)
> SmalltalkImage>>initializeStartUpList
> "SmalltalkImage initializeStartUpList"
>
> | oldList |
> oldList := StartUpList.
> StartUpList := OrderedCollection new.
> "These get processed from the top down..."
> #(
> Delay
> DisplayScreen
> Cursor
> InputEventFetcher
> ProcessorScheduler  "Starts low space watcher and bkground."
> LanguageEnvironment
> FileDirectory  "Enables file stack dump and opens sources."
> NaturalLanguageTranslator
> ShortIntegerArray
> ShortRunArray
> CrLfFileStream
> ) do:[:clsName|
> Smalltalk at: clsName ifPresent:[:cls| Smalltalk addToStartUpList:  
> cls].
> ].
> oldList ifNotNil: [oldList do: [:className | Smalltalk at: className
> ifPresent: [:theClass | Smalltalk addToStartUpList: theClass]]].
> #(
> PasteUpMorph
> "ControlManager"
> ) do:[:clsName|
> Smalltalk at: clsName ifPresent:[:cls| Smalltalk addToStartUpList:  
> cls].
> ].
>
>
> Now if we check the classes that have a addToStartUpList: call and  
> that are not in the previous list.
> We see that we missed a lot of them.
>
> classes := ((SystemNavigation default allCallsOn: #addToStartUpList:)
> collect: [ :e | e methodClass ]),
> ((SystemNavigation default allCallsOn: #addToStartUpList:after:)
> collect: [ :e | e methodClass ]).
> classNames := classes collect: [ :n | n instanceSide name ].
> (Smalltalk class classVarNamed: 'StartUpList') do: [ :s |
> classNames remove: s ifAbsent: [] ].
> classNames asSortedCollection
>
>
> a SortedCollection(#AutoStart #CPUWatcher #Clipboard #CommandHistory  
> #ExternalSettings #FreeTypeFontProvider #FreeTypeSettings  
> #HostSystemMenus #HostWindowProxy #InputEventSensor  
> #InternetConfiguration #Locale #MenuIcons #MultiByteFileStream  
> #OSPlatform #ProcessBrowser #SecurityManager #SmalltalkImage  
> #SmalltalkImage #SystemDictionary #SystemDictionary #UITheme  
> #UUIDGenerator #WeakArray).
>
> InputEventSensor has startup and shutdown but no initialize
>
>
>
> Stef
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project