[Vm-dev] VM Maker: VMMakerUI-eem.53.mcz
commits at source.squeak.org
commits at source.squeak.org
Sun Dec 5 17:43:19 UTC 2021
Eliot Miranda uploaded a new version of VMMakerUI to project VM Maker:
http://source.squeak.org/VMMaker/VMMakerUI-eem.53.mcz
==================== Summary ====================
Name: VMMakerUI-eem.53
Author: eem
Time: 5 December 2021, 9:43:17.24613 am
UUID: 7b14f884-f965-45ae-a901-1a3e595682ea
Ancestors: VMMakerUI-eem.52
Simulator: move and refactor the window closing machinery. Fix closing the multi-threaded simulator and ensure debuggers in threads are also closed.
=============== Diff against VMMakerUI-eem.52 ===============
Item was added:
+ ----- Method: CogVMSimulator>>close (in category '*VMMakerUI-InterpreterSimulation-Morphic') -----
+ 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.
+ self closeDependentWindows!
Item was added:
+ ----- Method: CogVMSimulator>>isDependentDebugger: (in category '*VMMakerUI-InterpreterSimulation-Morphic') -----
+ isDependentDebugger: aModel
+ ^aModel isDebugger
+ and: [(aModel interruptedProcess suspendedContext ifNotNil:
+ [:sctxt|
+ sctxt findContextSuchThat:
+ [:ctxt|
+ (ctxt receiver == cogit
+ and: [ctxt selector == #simulateCogCodeAt:])
+ or: [ctxt receiver == self
+ and: [ctxt selector == #interpret
+ or: [ctxt selector == #threadSchedulingLoop:]]]]]) notNil]
+
+ "World submorphs select: [:submorph| self isDependentDebugger: submorph model]"!
Item was added:
+ ----- Method: CogVMSimulator>>windowIsClosing (in category '*VMMakerUI-InterpreterSimulation-Morphic') -----
+ windowIsClosing
+ self close.
+ [quitBlock ifNotNil:
+ [:effectiveQuitBlock|
+ quitBlock := nil. "stop recursion on explicit window close."
+ [effectiveQuitBlock value]
+ on: BlockCannotReturn
+ do: [:ex|]]] "Cause return from #test, et al"
+ ensure:
+ [self threadManager ifNotNil:
+ [:threadManager| threadManager shutdownModule]]!
Item was added:
+ ----- Method: InterpreterSimulator>>openAsMorph (in category '*VMMakerUI-InterpreterSimulation-Morphic') -----
+ 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 at 0 corner: 1 at 0.8).
+
+ transcript := TranscriptStream on: (String new: 10000).
+ window addMorph: (PluggableTextMorph on: transcript text: nil accept: nil
+ readSelection: nil menu: #codePaneMenu:shifted:)
+ frame: (0 at 0.8 corner: 0.7 at 1).
+
+ window addMorph: (PluggableTextMorph on: self
+ text: #byteCountText accept: nil) hideScrollBarsIndefinitely
+ frame: (0.7 at 0.8 corner: 1 at 1).
+
+ window openInWorld.
+ ^window!
Item was added:
+ ----- Method: StackInterpreter>>closeDependentWindows (in category '*VMMakerUI-user interface') -----
+ closeDependentWindows
+ <doNotGenerate>
+ World submorphs do:
+ [:submorph|
+ (submorph model isVMObjectInspector
+ and: [submorph model coInterpreter == self]) ifTrue:
+ [submorph delete].
+ (self isDependentDebugger: submorph model) ifTrue:
+ [submorph model windowIsClosing.
+ submorph delete]]!
Item was added:
+ ----- Method: StackInterpreterSimulator>>close (in category '*VMMakerUI-InterpreterSimulation-Morphic') -----
+ 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.
+ self closeDependentWindows!
Item was added:
+ ----- Method: StackInterpreterSimulator>>isDependentDebugger: (in category '*VMMakerUI-InterpreterSimulation-Morphic') -----
+ isDependentDebugger: aModel
+ ^aModel isDebugger
+ and: [(aModel interruptedProcess suspendedContext ifNotNil:
+ [:sctxt|
+ sctxt findContextSuchThat:
+ [:ctxt|
+ ctxt receiver == self
+ and: [ctxt selector == #run]]]) notNil]!
Item was added:
+ ----- Method: StackInterpreterSimulator>>windowIsClosing (in category '*VMMakerUI-InterpreterSimulation-Morphic') -----
+ windowIsClosing
+ self close.
+ quitBlock ifNotNil:
+ [:effectiveQuitBlock|
+ quitBlock := nil. "stop recursion on explicit window close."
+ [effectiveQuitBlock value]
+ on: BlockCannotReturn
+ do: [:ex|]] "Cause return from #test, et al"!
More information about the Vm-dev
mailing list