[Vm-dev] behavior issues with windows vm?
John M McIntosh
johnmci at smalltalkconsulting.com
Fri Jun 19 02:43:55 UTC 2009
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 at smalltalkconsulting.com> Twitter:
squeaker68882
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
=
=
=
========================================================================
More information about the Vm-dev
mailing list