Hi John -
I fail to see where this is an issue with the Windows VM. Can you elaborate?
Cheers, - Andreas
John M McIntosh wrote:
Given a Pharo0.1Core-10204.image
with the following changes to collect startup times in SystemDictionary>>send: toClassesNamedIn: with:
Seem simple?
I hacked usage of FilePackage log: because it was simple and wanted to record times & progress to a file in the VM directory.
But the windows VM coughs up the dialog saying the file does not exist, create a new file or choose another file. This does not happen on mac or linux?
The file is not created via the hopeful code in the modified FilePackage>>logFileStream
It does not write a debug log, does not allow mouse clicks, keyboard entry etc, in general it's obvious to any input activity at this point.
Now I wondering here if sandboxing for etoys is leaping in and being nasty? Is there some magical call that is done later in the startup: processing that ok's the ability to create files? And that I *know* later after system startup I *can* invoke FilePackage log: 'foo' and we are happy if I rip out the file access in log:
Oh and I'm here because WikiServer wouldn't start on Windows, well because I've ripped out lots of eToy stuff, like the the eToy startup security sandboxing which isn't needed on the iPhone.
changes to base 10204 image
SystemDictionary>>send: startUpOrShutDown toClassesNamedIn: startUpOrShutDownList with: argument "Send the message #startUp: or #shutDown: to each class named in the list. The argument indicates if the system is about to quit (for #shutDown:) or if the image is resuming (for #startUp:). If any name cannot be found, then remove it from the list."
| removals class t6 t7 | removals := OrderedCollection new. startUpOrShutDownList do: [:name | class := self at: name ifAbsent: [nil]. class == nil ifTrue: [removals add: name] ifFalse: [class isInMemory ifTrue: [t6 := Time millisecondClockValue. class perform: startUpOrShutDown with: argument. startUpOrShutDown = #startUp: ifTrue: [t7 := class printString , ' ' ,
(Time millisecondClockValue - t6) printString. FilePackage log: t7]]]].
"Remove any obsolete entries, but after the iteration" startUpOrShutDownList removeAll: removals
FilePackage>>logFileStream LogFileStream ifNil: [LogFileStream := StandardFileStream forceNewFileNamed: 'ConflictChecker.log'. LogFileStream setToEnd]. LogFileStream closed ifTrue: [LogFileStream reopen. LogFileStream setToEnd]. ^ LogFileStream
Oh at shutdown: time we need to do a FilePackage closeLog, where that happens is an exercise for the reader.
--
John M. McIntosh johnmci@smalltalkconsulting.com Twitter: squeaker68882 Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com ===========================================================================