[Vm-dev] VM Maker: VMMaker.oscog-eem.2632.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Dec 24 01:24:32 UTC 2019


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!



More information about the Vm-dev mailing list