Hi all,
I have prepared an experimental kernel image based on Squeak 3.7.
Properties: - size: 1.3 MB - no Morphic - no MVC - no Sound - no Network - no Browser, Debugger etc. - no SUnit - no Projects support (there’s only one default project) - only necessary processes - no ObsoleteClasses (consistent references in sources) - single font - simple console with clipboard support - transcript output (with file log) - transparent creation mechanism
Download: - image with changes: ftp://comtalk.net/pub/bootstrap/kernel.zip - bootstrapping environment: ftp://comtalk.net/pub/bootstrap/Bootstrap.zip - please, can somebody place it to a new location with better connectivity?
How to prepare it: - use QuiteSmall image (http://www.swerlingphoto.com/squeak/QuiteSmall-3.7.zip) - load Mirrors.1.cs - load Bootstrap.st - evaluate "Bootstrap start" - in console type "Bootstrap revert" - wait a while - condense changes, clear transcript, save image
How it works: - for all classes in system "mirrors" are created. Mirrors are classes with prefix "Xxx" that contain only class definition and methods. They contain no valid references to class variables. - mirrors are modified so they contain whole class hierarchy for new system. There are original classes used in code of methods. - initial cleanup is executed and system processes are recreated - for all original classes, methods of mirrors are assigned. Methods that aren’t in mirrors are removed. Then the new definition of class is used. - unnecessary original classes are removed - mirrors are removed - whole sources are recompiled - additional cleanup is executed
The console is very simple. Now it cannot simulate FillInTheBlank, confirmations, user interrupt etc.
Feel free to clean, improve and fix this image. I have to say that I’m VERY tired of creation of this image now and I need a pause :-)
-- Pavel
Pavel:
Well, what could I say ?
BRAVO, BRAVO, BRAVO
Works very smooth on normal OS X VM's
I wonder about still 350 classes here...
Waiting your response to private mail.
Edgar
___________________________________________________________ 1GB gratis, Antivirus y Antispam Correo Yahoo!, el mejor correo web del mundo http://correo.yahoo.com.ar
Hi pavel
I could not download it. but this sounds cool.
Stef
Hi all,
I have prepared an experimental kernel image based on Squeak 3.7.
Properties:
- size: 1.3 MB
- no Morphic
- no MVC
- no Sound
- no Network
- no Browser, Debugger etc.
- no SUnit
- no Projects support (there’s only one default project)
- only necessary processes
- no ObsoleteClasses (consistent references in sources)
- single font
- simple console with clipboard support
- transcript output (with file log)
- transparent creation mechanism
Download:
- image with changes: ftp://comtalk.net/pub/bootstrap/kernel.zip
- bootstrapping environment: ftp://comtalk.net/pub/bootstrap/
Bootstrap.zip
- please, can somebody place it to a new location with better
connectivity?
How to prepare it:
- use QuiteSmall image (http://www.swerlingphoto.com/squeak/
QuiteSmall-3.7.zip)
- load Mirrors.1.cs
- load Bootstrap.st
- evaluate "Bootstrap start"
- in console type "Bootstrap revert"
- wait a while
- condense changes, clear transcript, save image
How it works:
- for all classes in system "mirrors" are created. Mirrors are
classes with prefix "Xxx" that contain only class definition and methods. They contain no valid references to class variables.
- mirrors are modified so they contain whole class hierarchy for
new system. There are original classes used in code of methods.
- initial cleanup is executed and system processes are recreated
- for all original classes, methods of mirrors are assigned.
Methods that aren’t in mirrors are removed. Then the new definition of class is used.
- unnecessary original classes are removed
- mirrors are removed
- whole sources are recompiled
- additional cleanup is executed
The console is very simple. Now it cannot simulate FillInTheBlank, confirmations, user interrupt etc.
Feel free to clean, improve and fix this image. I have to say that I’m VERY tired of creation of this image now and I need a pause :-)
-- Pavel
Try:
http://keepcool.kf.tu-berlin.de/public/mitarbeiter/sadowski/kernel.zip http://keepcool.kf.tu-berlin.de/public/mitarbeiter/sadowski/Bootstrap.zip
On Mon, 17 Oct 2005, Pavel Krivanek wrote:
I could not download it. but this sounds cool.
I have no problems with downloading. Please, try it again. Can anybody serve another location?
-- Pavel
Pavel Krivanek wrote:
Hi all,
I have prepared an experimental kernel image based on Squeak 3.7.
Properties:
- size: 1.3 MB
- no Morphic
- no MVC
- no Sound
- no Network
- no Browser, Debugger etc.
- no SUnit
- no Projects support (there’s only one default project)
- only necessary processes
- no ObsoleteClasses (consistent references in sources)
- single font
- simple console with clipboard support
- transcript output (with file log)
- transparent creation mechanism
Hoorah! Yay for small images! :-)
Can you take this and install everything again back to the level of a 'basic' Squeak image?
Is there a plan to adopt a small image (such as this) as the official "tiny" image from which the larger images are built?
Mikevdg.
Hi all,
I have prepared an experimental kernel image based on Squeak 3.7.
Properties:
- size: 1.3 MB
- no Morphic
- no MVC
- no Sound
- no Network
- no Browser, Debugger etc.
- no SUnit
- no Projects support (there’s only one default project)
- only necessary processes
- no ObsoleteClasses (consistent references in sources)
- single font
- simple console with clipboard support
- transcript output (with file log)
- transparent creation mechanism
Hoorah! Yay for small images! :-)
Can you take this and install everything again back to the level of a 'basic' Squeak image?
Is there a plan to adopt a small image (such as this) as the official "tiny" image from which the larger images are built?
Mikevdg.
Sorry, but I have to say that it’s not possible, at least now.
1) It’s based on Squeak 3.7 and the upgrade to Squeak 3.8 is complicated with m17n integration (that has moreover undergone heavy quake before final release) 2) As you can see, Squeak can have separable kernel, but its architecture is not ready for safe loading of top level packages. This packages (like Morphic) are often very insensitively embedded in kernel 3) The code is often not modular. The classical example is construction isMorphic ifTrue: [ do something with Morphic ] ifFalse: [ do something with MVC]. There’s no space for another UI (like Tweak or wxSqueak) or no UI. 4) This step requires support of whole community and massive painful refactoring
So the question is, do we want Squeak with minimal kernel and packages? Do not say yes promptly because this architecture is in fact not very familiar with Smalltalk philosophy.
If we say yes, then we have to specify general kernel architecture and properties. It’s useless to try to prepare similar kernel for Squeak 3.9 without vision. Locus classicus: "This calls for immediate discussion!" ;-)
-- Pavel
On 10/18/05, Pavel Krivanek squeak1@continentalbrno.cz wrote:
- The code is often not modular.
That's being dealt with in 3.9a, for example by integrating ToolBuilder code.
Yes, I think we want to go there (this has been discussed almost as often as licensing...), and yes, we need to do a lot of refactoring before we'll be there :-)
On 10/18/05, Pavel Krivanek squeak1@continentalbrno.cz wrote:
- The code is often not modular.
That's being dealt with in 3.9a, for example by integrating ToolBuilder code.
Yes, I think we want to go there (this has been discussed almost as often as licensing...), and yes, we need to do a lot of refactoring before we'll be there :-)
Yes, ToolBuilder is important step forward but we have to prepare kernel for its absence (no UI at all), right?
It's much easier to remove something from image than to think out the way how to put it safely back. This kernel image strictly removes all references to GUI etc. But I think it's not the right way. The image has to contain some slots for optional modules like ToolBuilder.
-- Pavel
Easy enough - make a dummy implementation and plug that in when there's no UI. Or a command-line one, whatever.
On 10/18/05, Pavel Krivanek squeak1@continentalbrno.cz wrote:
On 10/18/05, Pavel Krivanek squeak1@continentalbrno.cz wrote:
- The code is often not modular.
That's being dealt with in 3.9a, for example by integrating ToolBuilder code.
Yes, I think we want to go there (this has been discussed almost as often as licensing...), and yes, we need to do a lot of refactoring before we'll be there :-)
Yes, ToolBuilder is important step forward but we have to prepare kernel for its absence (no UI at all), right?
It's much easier to remove something from image than to think out the way how to put it safely back. This kernel image strictly removes all references to GUI etc. But I think it's not the right way. The image has to contain some slots for optional modules like ToolBuilder.
-- Pavel
That's being dealt with in 3.9a, for example by integrating ToolBuilder code.
Yes, I think we want to go there (this has been discussed almost as often as licensing...), and yes, we need to do a lot of refactoring before we'll be there :-)
Yes, ToolBuilder is important step forward but we have to prepare kernel for its absence (no UI at all), right?
It's much easier to remove something from image than to think out the way how to put it safely back. This kernel image strictly removes all references to GUI etc. But I think it's not the right way. The image has to contain some slots for optional modules like ToolBuilder.
I think that we should go in that direction stepwise. So any architectural improvements going in that direction are important. This will be long but this is important to go that way. And ToolBuilder, services are part of the big pictures to be able to get a more modular system. So your feedback and help to making that happen is really important.
Stef
Pavel Krivanek puso en su mail :
Sorry, but I have to say that it¹s not possible, at least now.
- It¹s based on Squeak 3.7 and the upgrade to Squeak 3.8 is complicated
with m17n integration (that has moreover undergone heavy quake before final release) 2) As you can see, Squeak can have separable kernel, but its architecture is not ready for safe loading of top level packages. This packages (like Morphic) are often very insensitively embedded in kernel 3) The code is often not modular. The classical example is construction isMorphic ifTrue: [ do something with Morphic ] ifFalse: [ do something with MVC]. There¹s no space for another UI (like Tweak or wxSqueak) or no UI. 4) This step requires support of whole community and massive painful refactoring
So the question is, do we want Squeak with minimal kernel and packages? Do not say yes promptly because this architecture is in fact not very familiar with Smalltalk philosophy.
If we say yes, then we have to specify general kernel architecture and properties. It¹s useless to try to prepare similar kernel for Squeak 3.9 without vision. Locus classicus: "This calls for immediate discussion!" ;-)
-- Pavel
I write you off list, now I say something to all what could be interested.
Some people could know what I working on SqueaKLight, what is trying to be the minimal morphic what could grow to any image.
I also take the Boris script for go to 3.7 MVC and how load things on it. At present , I was able to have how to load Monticello code produced in 3.8 or 3.9, in particular I was able to load Network-gk.15.mcz what I think is last Network "package". Also could have MVC doing all what I wish with .png and .gif external files and happy playing .mp3, taking the appropriate "parts" from 3.7, 3.8 or 3.9.
I think what you do is the most close to "Egg" what in past I talking about, meaning the bare code what could be run in regular Terminal mode on Unix like OS, with current normal VM's.
So, the answer is all what different people are working on could converge on 4.0 , two years from now.
I put the new 3.7 MVC image on my fpt. ftp://elpelotero@200-122-104-133.cab.prima.net.ar/ password: elpelotero.
Cheers
Edgar Edgar
___________________________________________________________ 1GB gratis, Antivirus y Antispam Correo Yahoo!, el mejor correo web del mundo http://correo.yahoo.com.ar
Hi Pavel,
I looked into Mirrors.1.cs and Bootstrap.st, how did you manage "mirrors are modified so they contain whole class hierarchy for new system. There are original classes used in code of methods."
Being aware that the answer most likely is "manually", could you post an "abstract" so that other people (especially me) can learn from your experience.
Thank you very much in advance.
/Klaus
On Sun, 16 Oct 2005 18:32:16 +0200, Pavel Krivanek squeak1@continentalbrno.cz wrote:
Hi all,
I have prepared an experimental kernel image based on Squeak 3.7.
Properties:
- size: 1.3 MB
- no Morphic
- no MVC
- no Sound
- no Network
- no Browser, Debugger etc.
- no SUnit
- no Projects support (there’s only one default project)
- only necessary processes
- no ObsoleteClasses (consistent references in sources)
- single font
- simple console with clipboard support
- transcript output (with file log)
- transparent creation mechanism
Download:
- image with changes: ftp://comtalk.net/pub/bootstrap/kernel.zip
- bootstrapping environment:
ftp://comtalk.net/pub/bootstrap/Bootstrap.zip
- please, can somebody place it to a new location with better
connectivity?
How to prepare it:
- use QuiteSmall image
(http://www.swerlingphoto.com/squeak/QuiteSmall-3.7.zip)
- load Mirrors.1.cs
- load Bootstrap.st
- evaluate "Bootstrap start"
- in console type "Bootstrap revert"
- wait a while
- condense changes, clear transcript, save image
How it works:
- for all classes in system "mirrors" are created. Mirrors are classes
with prefix "Xxx" that contain only class definition and methods. They contain no valid references to class variables.
- mirrors are modified so they contain whole class hierarchy for new
system. There are original classes used in code of methods.
- initial cleanup is executed and system processes are recreated
- for all original classes, methods of mirrors are assigned. Methods
that aren’t in mirrors are removed. Then the new definition of class is used.
- unnecessary original classes are removed
- mirrors are removed
- whole sources are recompiled
- additional cleanup is executed
The console is very simple. Now it cannot simulate FillInTheBlank, confirmations, user interrupt etc.
Feel free to clean, improve and fix this image. I have to say that I’m VERY tired of creation of this image now and I need a pause :-)
-- Pavel
Hi Klaus,
first of all you need clean image that contains no obsolete classes and can create set of mirrors without errors. You may find little problems, for example AsyncFile class contains class variable named Error that collides with a class name etc.
If you can create mirrors, try to carry out bootstrapping - revert mirrors. That can show next inconsistencies in sources because it does deep recompilation of whole image. You don’t need to do this from emergency console because it isn’t destructive operation. Only changes file is then much larger. That means that this process can be used for creating of every image, not only extremely small ones. Of course the source and bootstrapped image has to be similar, you cannot create 3.8 image from 3.7 because of deep changes related to m17n integration.
When you can bootstrap original image to itself, you may start to modify it. E.g. if you want to remove a class, take its original, find all class references to it, select all references from mirrors (classes that starts with prefix Xxx) and then correct manually all "infected" methods. That means that you modify them or check senders of them (or senders of senders of senders of them) and remove them. Remember that removed class has to have no subclasses.
Of course you will not remove class by class. In this case you may use transcript output from final recompilation of bootstrapped image. Compiler writes undeclared references to transcript. That’s why the list of recompiled classes begins with tab. Warnings of compiler are easily visible.
Obsolete classes are very important indicator of image consistency. If you reach the state in that your image will not have undeclared references in source codes of methods, most of obsolete classes will disappear. But there will be still forgotten references to instances of obsolete classes in system dictionary and some class variables. You have to find them using inspector or pointersTo: method.
Thanks mirrors you may modify system radically. Of course you must not break compiler. Some of classes have unloading code that may be dangerous.
If you know what you want, shrinking is not difficult. It’s time consuming and little boring operation. If you want to file out mirrors, the method addMirrorsToCurrentChangeSet can be helpful. The change set file with mirrors should not contain the section with initialization of classes.
Any questions?
-- Pavel
Hi Pavel,
I looked into Mirrors.1.cs and Bootstrap.st, how did you manage "mirrors are modified so they contain whole class hierarchy for new system. There are original classes used in code of methods."
Being aware that the answer most likely is "manually", could you post an "abstract" so that other people (especially me) can learn from your experience.
Thank you very much in advance.
/Klaus
On Sun, 16 Oct 2005 18:32:16 +0200, Pavel Krivanek squeak1@continentalbrno.cz wrote:
Hi all,
I have prepared an experimental kernel image based on Squeak 3.7.
Properties:
- size: 1.3 MB
- no Morphic
- no MVC
- no Sound
- no Network
- no Browser, Debugger etc.
- no SUnit
- no Projects support (there’s only one default project)
- only necessary processes
- no ObsoleteClasses (consistent references in sources)
- single font
- simple console with clipboard support
- transcript output (with file log)
- transparent creation mechanism
Download:
- image with changes: ftp://comtalk.net/pub/bootstrap/kernel.zip
- bootstrapping environment:
ftp://comtalk.net/pub/bootstrap/Bootstrap.zip
- please, can somebody place it to a new location with better
connectivity?
How to prepare it:
- use QuiteSmall image
(http://www.swerlingphoto.com/squeak/QuiteSmall-3.7.zip)
- load Mirrors.1.cs
- load Bootstrap.st
- evaluate "Bootstrap start"
- in console type "Bootstrap revert"
- wait a while
- condense changes, clear transcript, save image
How it works:
- for all classes in system "mirrors" are created. Mirrors are
classes with prefix "Xxx" that contain only class definition and methods. They contain no valid references to class variables.
- mirrors are modified so they contain whole class hierarchy for new
system. There are original classes used in code of methods.
- initial cleanup is executed and system processes are recreated
- for all original classes, methods of mirrors are assigned. Methods
that aren’t in mirrors are removed. Then the new definition of class is used.
- unnecessary original classes are removed
- mirrors are removed
- whole sources are recompiled
- additional cleanup is executed
The console is very simple. Now it cannot simulate FillInTheBlank, confirmations, user interrupt etc.
Feel free to clean, improve and fix this image. I have to say that I’m VERY tired of creation of this image now and I need a pause :-)
-- Pavel
Hi Pavel, on Sun, 30 Oct 2005 19:20:25 +0100, you wrote:
[snipp]
Any questions?
Below is a retrofit for the full 3.7 stock image which allows you to run InterpreterSimulator on your kernel.image. The retrofit is from the 3.8 stock InterpreterSimulator (in 3.8 there's another InterpreterSimulator/FilePlugin/SecurityManager bug which I still have to isolate).
Now you can do
(InterpreterSimulatorLSB new openOn: 'kernel.image') test
and your console starts and works (Display simulated with a Form) up to (Smalltalk snapshot: false andQuit: true) which I just copy&paste "into" the console.
Great! A reasonable sized image for testing large portions of InterpreterSimulator etc! Thank you again.
BTW: Has anybody a method for running InterpreterSimulator's display+sensor access in a SystemWindow? Don't like to reinvent that wheel.
/Klaus
----------------------------
'From Squeak3.8 of ''5 May 2005'' [latest update: #6665] on 26 November 2005 at 5:28:55 pm'!
!InterpreterSimulator methodsFor: 'interpreter shell' stamp: 'tpr 6/23/2004 15:14'! functionPointerFor: primIndex inClass: lookupClass "Override Interpreter to handle the external primitives caching. See also internalExecuteNewMethod" (primIndex between: 1 and: MaxPrimitiveIndex) ifFalse:[^nil]. ^primitiveTable at: primIndex +1! ! ----------------------------- - 20124 tallies, 20131 msec.
**Tree** 97.4% {19608ms} InterpreterSimulatorLSB(InterpreterSimulator)>>test |93.9% {18903ms} InterpreterSimulatorLSB(InterpreterSimulator)>>dispatchOn:in: | |38.8% {7811ms} InterpreterSimulatorLSB(Interpreter)>>sendLiteralSelectorBytecode | | |37.4% {7529ms} InterpreterSimulatorLSB(Interpreter)>>normalSend | | | 35.7% {7187ms} InterpreterSimulatorLSB(Interpreter)>>commonSend | | | 34.1% {6865ms} InterpreterSimulatorLSB(Interpreter)>>internalExecuteNewMethod | | | 24.6% {4952ms} InterpreterSimulatorLSB(InterpreterSimulator)>>dispatchFunctionPointer: | | | |7.5% {1510ms} InterpreterSimulatorLSB(Interpreter)>>primitiveExternalCall | | | | |5.1% {1027ms} InterpreterSimulatorLSB(InterpreterSimulator)>>ioLoadExternalFunct...omModule:OfLength: | | | | | |5.1% {1027ms} InterpreterSimulatorLSB(InterpreterSimulator)>>ioLoadFunction:From: | | | | | | 2.6% {523ms} TranscriptStream>>show: | | | | | | |2.6% {523ms} TranscriptStream>>endEntry | | | | | | | 2.6% {523ms} TranscriptStream(Object)>>changed: | | | | | | | 2.6% {523ms} PluggableTextMorph>>update: | | | | | | | 2.4% {483ms} PluggableTextMorph(Morph)>>refreshWorld | | | | | | | 2.4% {483ms} PasteUpMorph>>displayWorldSafely | | | | | | | 2.4% {483ms} WorldState>>displayWorldSafely: [2.4% {483ms} PasteUpMorph>>displayWorld [ 2.4% {483ms} PasteUpMorph>>privateOuterDisplayWorld [ 2.4% {483ms} WorldState>>displayWorld:submorphs: [ 2.2% {443ms} WorldState>>drawWorld:submorphs:invalidAreasOn: [ 2.1% {423ms} FormCanvas(Canvas)>>fullDrawMorph: [ 2.1% {423ms} FormCanvas(Canvas)>>fullDraw: [ 2.1% {423ms} SystemWindow(Morph)>>fullDrawOn: | | | | | | 2.4% {483ms} InterpreterSimulatorLSB(InterpreterSimulator)>>loadNewPlugin: | | | | |2.4% {483ms} InterpreterSimulatorLSB(InterpreterSimulator)>>callExternalPrimitive: | | | |6.6% {1329ms} InterpreterSimulatorLSB(Interpreter)>>primitiveFullGC | | | | |6.5% {1309ms} InterpreterSimulatorLSB(InterpreterSimulator)>>fullGC | | | | | 6.3% {1268ms} InterpreterSimulatorLSB(ObjectMemory)>>fullGC | | | | | 3.2% {644ms} InterpreterSimulatorLSB(ObjectMemory)>>fullCompaction | | | | | |3.1% {624ms} InterpreterSimulatorLSB(ObjectMemory)>>incCompBody | | | | | 2.4% {483ms} InterpreterSimulatorLSB(ObjectMemory)>>markPhase | | | | | 2.4% {483ms} InterpreterSimulatorLSB(Interpreter)>>markAndTraceInterpreterOops | | | | | 2.4% {483ms} InterpreterSimulatorLSB(ObjectMemory)>>markAndTrace: | | | |4.1% {825ms} InterpreterSimulatorLSB(Interpreter)>>primitiveSomeInstance | | | | |4.1% {825ms} InterpreterSimulatorLSB(ObjectMemory)>>initialInstanceOf: | | | | | 2.4% {483ms} InterpreterSimulatorLSB(ObjectMemory)>>fetchClassOf: | | | |2.3% {463ms} InterpreterSimulatorLSB(Interpreter)>>primitiveNextInstance | | | | 2.3% {463ms} InterpreterSimulatorLSB(ObjectMemory)>>instanceAfter: | | | 8.2% {1651ms} InterpreterSimulatorLSB(Interpreter)>>internalActivateNewMethod | | | 5.1% {1027ms} InterpreterSimulatorLSB(Interpreter)>>internalNewActiveContext: | | | 3.7% {745ms} InterpreterSimulatorLSB(Interpreter)>>internalFetchContextRegisters: | |9.5% {1912ms} InterpreterSimulatorLSB(Interpreter)>>returnTopFromMethod | | |8.6% {1731ms} InterpreterSimulatorLSB(Interpreter)>>commonReturn | | | 4.1% {825ms} InterpreterSimulatorLSB(Interpreter)>>internalFetchContextRegisters: | |6.1% {1228ms} InterpreterSimulatorLSB(InterpreterSimulator)>>pushTemporaryVariableBytecode | | |4.7% {946ms} InterpreterSimulatorLSB(Interpreter)>>pushTemporaryVariable: | | | 3.8% {765ms} InterpreterSimulatorLSB(Interpreter)>>temporary: | | | 3.6% {725ms} InterpreterSimulatorLSB(ObjectMemory)>>fetchPointer:ofObject: | | | 2.3% {463ms} InterpreterSimulatorLSB(InterpreterSimulator)>>cCoerce:to: | | | 2.1% {423ms} SmallInteger(Integer)>>coerceTo:sim: | |5.5% {1107ms} InterpreterSimulatorLSB(Interpreter)>>singleExtendedSendBytecode | | |5.4% {1087ms} InterpreterSimulatorLSB(Interpreter)>>normalSend | | | 5.2% {1047ms} InterpreterSimulatorLSB(Interpreter)>>commonSend | | | 5.0% {1007ms} InterpreterSimulatorLSB(Interpreter)>>internalExecuteNewMethod | | | 4.1% {825ms} InterpreterSimulatorLSB(InterpreterSimulator)>>dispatchFunctionPointer: | | | 3.2% {644ms} InterpreterSimulatorLSB(Interpreter)>>primitiveExternalCall | |3.6% {725ms} InterpreterSimulatorLSB(Interpreter)>>bytecodePrimAt | |2.2% {443ms} InterpreterSimulatorLSB(Interpreter)>>bytecodePrimEqual | |2.1% {423ms} InterpreterSimulatorLSB(Interpreter)>>returnTopFromBlock | |2.0% {403ms} InterpreterSimulatorLSB(Interpreter)>>bytecodePrimValueWithArg |3.5% {705ms} primitives 2.5% {503ms} InterpreterSimulatorLSB(InterpreterSimulator)>>openOn: 2.5% {503ms} InterpreterSimulatorLSB(InterpreterSimulator)>>openOn:extraMemory: 2.4% {483ms} InterpreterSimulatorLSB(Interpreter)>>initializeInterpreter: **Leaves** 10.0% {2013ms} String>>= 8.6% {1731ms} CArray>>interpreter:address:unitSize: 6.9% {1389ms} InterpreterSimulatorLSB(InterpreterSimulator)>>longAt: 5.0% {1007ms} CArray>>+ 4.1% {825ms} SmallInteger(Integer)>><< 3.5% {705ms} InterpreterSimulatorLSB(InterpreterSimulator)>>test 3.4% {684ms} InterpreterSimulatorLSB(InterpreterSimulator)>>longAt:put: 3.4% {684ms} InterpreterSimulatorLSB(InterpreterSimulator)>>cCoerce:to: 2.7% {544ms} InterpreterSimulatorLSB(ObjectMemory)>>fetchPointer:ofObject: 2.6% {523ms} SmallInteger(Integer)>>>> 2.2% {443ms} String(Object)>>species 2.2% {443ms} SmallInteger(Integer)>>coerceTo:sim: 2.1% {423ms} GrafPort(BitBlt)>>displayString:from:to:at:strikeFont:kern:
**Memory** old -343,356 bytes young -39,332 bytes used -382,688 bytes free +2,279,080 bytes
**GCs** full 2 totalling 204ms (1.0% uptime), avg 102.0ms incr 2033 totalling 476ms (2.0% uptime), avg 0.0ms tenures 10 (avg 203 GCs/tenure) root table 0 overflows
squeak-dev@lists.squeakfoundation.org