Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2632.mcz ==================== Summary ==================== Name: VMMaker.oscog-eem.2632 Author: eem Time: 23 December 2019, 5:24:23.683333 pm UUID: 5041c0fb-3103-4442-982d-5f737c3b6070 Ancestors: VMMaker.oscog-eem.2631 Move UI only fiunctionality to VMMakerUI =============== Diff against VMMaker.oscog-eem.2631 =============== Item was removed: - ----- Method: CogVMSimulator>>toggleTranscript (in category 'UI') ----- - toggleTranscript - | transcriptPane | - transcript ifNil: [transcript := Transcript. ^self]. - displayView ifNil: [^self changed: #flash]. - transcriptPane := (displayView outermostMorphThat: [:m| m isSystemWindow]) - submorphThat: [:m| m model isStream] - ifNone: [^self changed: #flash]. - transcript := transcript = Transcript - ifTrue: [transcriptPane model] - ifFalse: [Transcript]! Item was removed: - ----- Method: CogVMSimulator>>utilitiesMenu: (in category 'UI') ----- - utilitiesMenu: aMenuMorph - aMenuMorph - add: 'toggle transcript' action: #toggleTranscript; - add: 'clone VM' action: #cloneSimulationWindow; - addLine; - add: 'print ext head frame' action: #printExternalHeadFrame; - add: 'print int head frame' action: #printHeadFrame; - add: 'print mc/cog head frame' action: [self printFrame: cogit processor fp WithSP: cogit processor sp]; - add: 'short print ext head frame & callers' action: [self shortPrintFrameAndCallers: framePointer]; - add: 'short print int head frame & callers' action: [self shortPrintFrameAndCallers: localFP]; - add: 'short print mc/cog head frame & callers' action: [self shortPrintFrameAndCallers: cogit processor fp]; - add: 'long print ext head frame & callers' action: [self printFrameAndCallers: framePointer SP: stackPointer]; - add: 'long print int head frame & callers' action: [self printFrameAndCallers: localFP SP: localSP]; - add: 'long print mc/cog head frame & callers' action: [self printFrameAndCallers: cogit processor fp SP: cogit processor sp]; - add: 'print frame...' action: [(self promptHex: 'print frame') ifNotNil: [:fp| self printFrame: fp]]; - add: 'print call stack' action: #printCallStack; - add: 'print stack call stack' action: #printStackCallStack; - add: 'print stack call stack of...' action: [(self promptHex: 'frame') ifNotNil: [:fp| self printStackCallStackOf: fp]]; - add: 'print call stack of...' action: [(self promptHex: 'context or process oop') ifNotNil: [:obj| self printCallStackOf: obj]]; - add: 'print call stack of frame...' action: [(self promptHex: 'frame') ifNotNil: [:fp| self printCallStackFP: fp]]; - add: 'print all stacks' action: #printAllStacks; - add: 'write back local ptrs' action: [stackPointer := localSP. framePointer := localFP. instructionPointer := localIP. - self writeBackHeadFramePointers]; - add: 'write back mc ptrs' action: [stackPointer := cogit processor sp. framePointer := cogit processor fp. instructionPointer := cogit processor pc. - self externalWriteBackHeadFramePointers]; - addLine; - add: 'print rump C stack' action: [objectMemory printMemoryFrom: cogit processor sp to: CFramePointer]; - add: 'print registers' action: [cogit processor printRegistersOn: transcript]; - add: 'print register map' action: [cogit printRegisterMapOn: transcript]; - add: 'disassemble method/trampoline...' action: [(self promptHex: 'pc') ifNotNil: [:pc| cogit disassembleCodeAt: pc]]; - add: 'disassemble method/trampoline at pc' action: - [cogit disassembleCodeAt: (((cogit codeEntryFor: cogit processor pc) isNil - and: [(cogit methodZone methodFor: cogit processor pc) = 0]) - ifTrue: [instructionPointer] - ifFalse: [cogit processor pc])]; - add: 'disassemble ext head frame method' action: [cogit disassembleMethod: (self frameMethod: framePointer)]; - add: 'print oop...' action: [(self promptHex: 'print oop') ifNotNil: [:oop| self printOop: oop]]; - add: 'long print oop...' action: [(self promptHex: 'print oop') ifNotNil: [:oop| self longPrintOop: oop]]; - add: 'print context...' action: [(self promptHex: 'print context') ifNotNil: [:oop| self printContext: oop]]; - add: 'symbolic method...' action: [(self promptHex: 'method bytecodes') ifNotNil: [:oop| self symbolicMethod: oop]]; - addLine; - add: 'inspect object memory' target: objectMemory action: #inspect; - add: 'run leak checker' action: [Cursor execute showWhile: [self runLeakChecker]]; - add: 'inspect cointerpreter' action: #inspect; - add: 'inspect cogit' target: cogit action: #inspect; - add: 'inspect method zone' target: cogit methodZone action: #inspect; - add: 'inspect processor' action: [CogProcessorAlienInspector openFor: cogit]. - self isThreadedVM ifTrue: - [aMenuMorph add: 'inspect thread manager' target: self threadManager action: #inspect]. - aMenuMorph - addLine; - add: 'print cog methods' target: cogMethodZone action: #printCogMethods; - add: 'print cog methods with prim...' action: - [(self promptNum: 'prim index') ifNotNil: [:pix| cogMethodZone printCogMethodsWithPrimitive: pix]]; - add: 'print cog methods with selector...' action: - [|s| s := UIManager default request: 'selector'. - s notEmpty ifTrue: - [s = 'nil' ifTrue: [s := nil]. - cogMethodZone methodsDo: - [:m| - (s ifNil: [m selector = objectMemory nilObject] - ifNotNil: [(objectMemory numBytesOf: m selector) = s size - and: [(self strncmp: s - _: (m selector + objectMemory baseHeaderSize) - _: (objectMemory numBytesOf: m selector)) = 0]]) ifTrue: - [cogit printCogMethod: m]]]]; - add: 'print cog methods with method...' action: - [(self promptHex: 'method') ifNotNil: [:methodOop| cogMethodZone printCogMethodsWithMethod: methodOop]]; - add: 'print cog method for...' action: [(self promptHex: 'pc') ifNotNil: [:pc| cogit printCogMethodFor: pc]]; - add: 'print cog method header for...' action: [(self promptHex: 'pc') ifNotNil: [:pc| cogit printCogMethodHeaderFor: pc]]; - add: 'print trampoline table' target: cogit action: #printTrampolineTable; - add: 'print prim trace log' action: #dumpPrimTraceLog; - add: 'report recent instructions' target: cogit action: #reportLastNInstructions; - add: (cogit printRegisters - ifTrue: ['no print registers each instruction'] - ifFalse: ['print registers each instruction']) - action: [cogit printRegisters: cogit printRegisters not]; - add: (cogit printInstructions - ifTrue: ['no print instructions each instruction'] - ifFalse: ['print instructions each instruction']) - action: [cogit printInstructions: cogit printInstructions not]; - addLine; - add: (cogit singleStep - ifTrue: ['no single step'] - ifFalse: ['single step']) - action: [cogit singleStep: cogit singleStep not]; - add: 'click step' action: [cogit setClickStepBreakBlock]; - add: 'set break pc', cogit breakPC menuPrompt, '...-ve to disable or remove' action: [cogit promptForBreakPC]; - add: 'set break count...' action: [|s| s := UIManager default request: 'break count (dec)'. - s notEmpty ifTrue: [breakCount := Integer readFrom: s readStream]]; - add: 'set break selector...' action: [|s| s := UIManager default request: 'break selector (MNU:foo for MNU)'. - s notEmpty ifTrue: - [(s size > 4 and: [s beginsWith: 'MNU:']) - ifTrue: [self setBreakMNUSelector: (s allButFirst: 4)] - ifFalse: [self setBreakSelector: s]]]; - add: 'set break block...' action: [|s| s := UIManager default request: 'break block' initialAnswer: '[:address| false]'. - s notEmpty ifTrue: [self setBreakBlockFromString: s]]; - add: 'set cogit break method...' action: [(self promptHex: 'cogit breakMethod') ifNotNil: [:bm| cogit setBreakMethod: bm]]; - add: (printBytecodeAtEachStep - ifTrue: ['no print bytecode each bytecode'] - ifFalse: ['print bytecode each bytecode']) - action: [self ensureDebugAtEachStepBlock. - printBytecodeAtEachStep := printBytecodeAtEachStep not]; - add: (printFrameAtEachStep - ifTrue: ['no print frame each bytecode'] - ifFalse: ['print frame each bytecode']) - action: [self ensureDebugAtEachStepBlock. - printFrameAtEachStep := printFrameAtEachStep not]. - ^aMenuMorph! Item was removed: - ----- Method: CogVMSimulator>>windowColorToUse (in category 'UI') ----- - windowColorToUse - ^Color lightBlue! Item was removed: - ----- Method: Cogit>>setClickStepBreakBlock (in category 'simulation only') ----- - setClickStepBreakBlock - "Set the break block to present a confirmer, breaking if true, and restoring the previous break block. - If an open debugger on the receiver can be found, proceed it." - <doNotGenerate> - | previousBreakBlock previousAtEachStepBlock previousBreakPC previousSingleStep previousClickConfirm | - (breakBlock isNil or: [breakBlock method ~~ thisContext method]) ifTrue: - [previousBreakBlock := breakBlock. - previousAtEachStepBlock := coInterpreter atEachStepBlock. - previousBreakPC := breakPC. - previousSingleStep := singleStep. - previousClickConfirm := clickConfirm. - breakBlock := [:ign| - (processor pc ~= previousBreakPC - and: [UIManager confirm: 'step?']) - ifTrue: [false] - ifFalse: [breakBlock := previousBreakBlock. - coInterpreter atEachStepBlock: previousAtEachStepBlock. - breakPC := previousBreakPC. - singleStep := previousSingleStep. - clickConfirm := previousClickConfirm. - true]]. - coInterpreter atEachStepBlock: - [previousAtEachStepBlock value. - (coInterpreter localIP ~= previousBreakPC - and: [UIManager confirm: 'step?']) ifFalse: - [breakBlock := previousBreakBlock. - coInterpreter atEachStepBlock: previousAtEachStepBlock. - breakPC := previousBreakPC. - singleStep := previousSingleStep. - clickConfirm := previousClickConfirm. - self halt]]. - singleStep := breakPC := clickConfirm := true]. - (World submorphs - detect: - [:m| - m model isDebugger - and: [(m model interruptedProcess suspendedContext findContextSuchThat: - [:ctxt| - (ctxt receiver == self - and: [ctxt selector == #simulateCogCodeAt:]) - or: [ctxt receiver == coInterpreter - and: [ctxt selector == #interpret]]]) notNil]] - ifNone: []) ifNotNil: - [:debuggerWindow| - WorldState addDeferredUIMessage: - [debuggerWindow model proceed]]! Item was removed: - ----- Method: StackInterpreterSimulator>>setClickStepBreakBlock (in category 'UI') ----- - setClickStepBreakBlock - "Set the break block to present a confirmer, breaking if true, and restoring the previous break block. - If an open debugger on the receiver can be found, proceed it." - <doNotGenerate> - | previousAtEachStepBlock | - (atEachStepBlock isNil or: [atEachStepBlock method ~~ thisContext method]) ifTrue: - [previousAtEachStepBlock := atEachStepBlock. - atEachStepBlock := - [previousAtEachStepBlock value. - self changed: #byteCountText. - (UIManager confirm: 'step?') ifFalse: - [atEachStepBlock := previousAtEachStepBlock. - self halt]]]. - (World submorphs - detect: - [:m| - m model isDebugger - and: [(m model interruptedProcess suspendedContext findContextSuchThat: - [:ctxt| - ctxt receiver == self - and: [ctxt selector == #run]]) notNil]] - ifNone: []) ifNotNil: - [:debuggerWindow| - WorldState addDeferredUIMessage: - [debuggerWindow model proceed]]! Item was removed: - ----- Method: StackInterpreterSimulator>>toggleTranscript (in category 'UI') ----- - toggleTranscript - | transcriptPane | - transcript ifNil: [transcript := Transcript. ^self]. - displayView ifNil: [^self changed: #flash]. - transcriptPane := (displayView outermostMorphThat: [:m| m isSystemWindow]) - submorphThat: [:m| m model isStream] - ifNone: [^self changed: #flash]. - transcript := transcript = Transcript - ifTrue: [transcriptPane model] - ifFalse: [Transcript]! Item was removed: - ----- Method: StackInterpreterSimulator>>toggleTranscriptForSimulatorMorph: (in category 'UI') ----- - toggleTranscriptForSimulatorMorph: aTranscriptStreamOrTranscript - "tty think this through when not so tired" - self flag: 'tty'. - transcript ifNil: [transcript := Transcript. ^self]. - displayView ifNil: [^self changed: #flash]. - transcript := transcript = Transcript - ifTrue: [aTranscriptStreamOrTranscript] - ifFalse: [Transcript]! Item was removed: - ----- Method: StackInterpreterSimulator>>utilitiesMenu: (in category 'UI') ----- - utilitiesMenu: aMenuMorph - aMenuMorph - add: 'toggle transcript' action: #toggleTranscript; - add: 'clone VM' action: #cloneSimulationWindow; - addLine; - add: 'print ext head frame' action: #printExternalHeadFrame; - add: 'print int head frame' action: #printHeadFrame; - add: 'short print ext frame & callers' action: [self shortPrintFrameAndCallers: framePointer]; - add: 'short print int frame & callers' action: [self shortPrintFrameAndCallers: localFP]; - add: 'long print ext frame & callers' action: [self printFrameAndCallers: framePointer SP: stackPointer]; - add: 'long print int frame & callers' action: [self printFrameAndCallers: localFP SP: localSP]; - add: 'print frame...' action: [(self promptHex: 'print frame') ifNotNil: [:fp| self printFrame: fp]]; - add: 'print call stack' action: #printCallStack; - add: 'print stack call stack' action: #printStackCallStack; - add: 'print stack call stack of...' action: [(self promptHex: 'frame') ifNotNil: [:fp| self printStackCallStackOf: fp]]; - add: 'print call stack of...' action: [(self promptHex: 'context or process oop') ifNotNil: [:obj| self printCallStackOf: obj]]; - add: 'print call stack of frame...' action: [(self promptHex: 'frame') ifNotNil: [:fp| self printCallStackFP: fp]]; - add: 'print all stacks' action: #printAllStacks; - add: 'write back local ptrs' action: [stackPointer := localSP. framePointer := localFP. instructionPointer := localIP. - self writeBackHeadFramePointers]; - add: 'print prim trace log' action: #dumpPrimTraceLog; - addLine; - add: 'print oop...' action: [(self promptHex: 'print oop') ifNotNil: [:oop| self printOop: oop]]; - add: 'long print oop...' action: [(self promptHex: 'print oop') ifNotNil: [:oop| self longPrintOop: oop]]; - add: 'print context...' action: [(self promptHex: 'print context') ifNotNil: [:oop| self printContext: oop]]; - addLine; - add: 'inspect object memory' target: objectMemory action: #inspect; - add: 'run leak checker' action: [Cursor execute showWhile: [self runLeakChecker]]; - add: 'inspect interpreter' action: #inspect; - addLine; - add: 'set break count...' action: [|s| s := UIManager default request: 'break count (dec)'. - s notEmpty ifTrue: [breakCount := Integer readFrom: s readStream]]; - add: 'set break selector...' action: [|s| s := UIManager default request: 'break selector (MNU:foo for MNU)'. - s notEmpty ifTrue: - [(s size > 4 and: [s beginsWith: 'MNU:']) - ifTrue: [self setBreakMNUSelector: (s allButFirst: 4)] - ifFalse: [self setBreakSelector: s]]]; - add: 'turn valid exec ptrs assert o', (assertVEPAES ifTrue: ['ff'] ifFalse: ['n']) action: [assertVEPAES := assertVEPAES not]; - add: 'click step' action: [self setClickStepBreakBlock]; - add: (printSends - ifTrue: ['no print sends'] - ifFalse: ['print sends']) - action: [self ensureDebugAtEachStepBlock. - printSends := printSends not]; - "currently printReturns does nothing" - "add: (printReturns - ifTrue: ['no print returns'] - ifFalse: ['print returns']) - action: [self ensureDebugAtEachStepBlock. - printReturns := printReturns not];" - add: (printBytecodeAtEachStep - ifTrue: ['no print bytecode each bytecode'] - ifFalse: ['print bytecode each bytecode']) - action: [self ensureDebugAtEachStepBlock. - printBytecodeAtEachStep := printBytecodeAtEachStep not]; - add: (printFrameAtEachStep - ifTrue: ['no print frame each bytecode'] - ifFalse: ['print frame each bytecode']) - action: [self ensureDebugAtEachStepBlock. - printFrameAtEachStep := printFrameAtEachStep not]. - ^aMenuMorph! Item was removed: - ----- Method: StackInterpreterSimulator>>windowColorToUse (in category 'UI') ----- - windowColorToUse - ^Color lightBlue! |
Free forum by Nabble | Edit this page |