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