Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3118.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3118 Author: eem Time: 5 December 2021, 9:44:14.421853 am UUID: 2b620c6a-372b-49a2-b4d2-5404fbf4afb1 Ancestors: VMMaker.oscog-eem.3117
Dual of VMMakerUI-eem.53
Simulator: move and refactor the window closing machinery. Fix closing the multi-threaded simulator and ensure debuggers in threads are also closed.
=============== Diff against VMMaker.oscog-eem.3117 ===============
Item was removed: - ----- Method: CogVMSimulator>>close (in category 'initialize-release') ----- - close "close any files that ST may have opened, etc" - pluginList do: [:assoc| | plugin | plugin := assoc value. plugin ~~ self ifTrue: [plugin close]]. - "Ugh; at least some of this code belongs in the UI..." - displayView ifNotNil: - [displayView activeHand removeEventListener: self]. - ActiveHand removeEventListener: self. - World submorphs do: - [:submorph| - (submorph model isVMObjectInspector - and: [submorph model coInterpreter == self]) ifTrue: - [submorph delete]. - (submorph model isDebugger - and: [(submorph model interruptedProcess suspendedContext ifNotNil: - [:sctxt| - sctxt findContextSuchThat: - [:ctxt| - (ctxt receiver == cogit - and: [ctxt selector == #simulateCogCodeAt:]) - or: [ctxt receiver == self - and: [ctxt selector == #interpret]]]]) notNil]) ifTrue: - [submorph model windowIsClosing. - submorph delete]]!
Item was removed: - ----- Method: CogVMSimulator>>windowIsClosing (in category 'primitive support') ----- - windowIsClosing - self threadManager ifNotNil: - [:threadManager| threadManager shutdownModule]. - quitBlock ifNotNil: - [:effectiveQuitBlock| - quitBlock := nil. "stop recursion on explicit window close." - [effectiveQuitBlock value] - on: BlockCannotReturn - do: [:ex|]] "Cause return from #test, et al"!
Item was removed: - ----- Method: InterpreterSimulator>>openAsMorph (in category 'UI') ----- - openAsMorph - "Open a morphic view on this simulation." - | window localImageName | - localImageName := imageName - ifNotNil: [self localNameFor: imageName] - ifNil: [' synthetic image']. - window := (SystemWindow labelled: 'Simulation of ' , localImageName) model: self. - - window addMorph: (displayView := ImageMorph new image: displayForm) - frame: (0@0 corner: 1@0.8). - - transcript := TranscriptStream on: (String new: 10000). - window addMorph: (PluggableTextMorph on: transcript text: nil accept: nil - readSelection: nil menu: #codePaneMenu:shifted:) - frame: (0@0.8 corner: 0.7@1). - - window addMorph: (PluggableTextMorph on: self - text: #byteCountText accept: nil) hideScrollBarsIndefinitely - frame: (0.7@0.8 corner: 1@1). - - window openInWorld. - ^window!
Item was removed: - ----- Method: StackInterpreterSimulator>>close (in category 'initialize-release') ----- - close "close any files that ST may have opened, etc" - pluginList do: [:assoc| | plugin | plugin := assoc value. plugin ~~ self ifTrue: [plugin close]]. - "Ugh; at least some of this code belongs in the UI..." - displayView ifNotNil: - [displayView activeHand removeEventListener: self]. - ActiveHand removeEventListener: self. - World submorphs do: - [:submorph| - (submorph model isVMObjectInspector - and: [submorph model coInterpreter == self]) ifTrue: - [submorph delete]. - (submorph model isDebugger - and: [(submorph model interruptedProcess suspendedContext ifNotNil: - [:sctxt| - sctxt findContextSuchThat: - [:ctxt| - ctxt receiver == self - and: [ctxt selector == #run]]]) notNil]) ifTrue: - [submorph model windowIsClosing. - submorph delete]]!
Item was removed: - ----- Method: StackInterpreterSimulator>>windowIsClosing (in category 'primitive support') ----- - windowIsClosing - quitBlock ifNotNil: - [:effectiveQuitBlock| - quitBlock := nil. "stop recursion on explicit window close." - [effectiveQuitBlock value] - on: BlockCannotReturn - do: [:ex|]] "Cause return from #test, et al"!
vm-dev@lists.squeakfoundation.org