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

commits at source.squeak.org commits at source.squeak.org
Sun Jan 19 00:09:01 UTC 2020


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2664.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.2664
Author: eem
Time: 18 January 2020, 4:08:43.922984 pm
UUID: 5f602dc6-2388-4c17-b9a6-0eec94bbf796
Ancestors: VMMaker.oscog-eem.2663

Fix instruction reporting when using integer arrays to hold integerRegisterState. isArray is methinks too restrictive :-(

=============== Diff against VMMaker.oscog-eem.2663 ===============

Item was changed:
  ----- Method: Cogit>>reportLastNInstructions (in category 'debugging') -----
  reportLastNInstructions
  	<doNotGenerate>
  	| skipNext printInst |
  	skipNext := false.
  	printInst := [:inst|
  				coInterpreter transcript nextPutAll:
  					(EagerInstructionDecoration
  						ifTrue: [inst]
  						ifFalse: [processor
  									decorateDisassembly: inst
  									for: self
  									fromAddress: ((inst at: 3) = $r
  													ifTrue: [Integer readFrom: inst readStream]
  													ifFalse: [Integer readFrom: inst readStream base: 16])]); cr].
  	lastNInstructions withIndexDo:
  		[:thing :idx|
  		skipNext
  			ifTrue: [skipNext := false]
  			ifFalse:
+ 				[thing isString
+ 					ifFalse:
- 				[thing isArray
- 					ifTrue:
  						[thing first isString "i.e. { '(simulated return to '. processor retpcIn: coInterpreter memory. ')'}"
  							ifTrue:
  								[thing do:
  									[:stringOrNumber|
  									coInterpreter transcript nextPutAll: (stringOrNumber isString
  															ifTrue: [stringOrNumber]
  															ifFalse: [stringOrNumber hex])].
  									coInterpreter transcript cr]
  							ifFalse: "if possible, add the label to the instruction line to condense the output"
  								[coInterpreter transcript cr.
  								 (thing at: processor registerStatePCIndex ifAbsent: []) ifNotNil:
  									[:pc| | next label |
  									 label := self relativeLabelForPC: pc.
  									 ((next := lastNInstructions at: idx + 1 ifAbsent: []) notNil
  									  and: [next isString
  									  and: [(Integer readFrom: next readStream radix: 16) = pc]])
  										ifTrue: "Decorate instruction and eliminate pc line"
  											[skipNext := true.
  											 processor printRegisterStateExceptPC: thing on: coInterpreter transcript.
  											 label ifNotNil: [coInterpreter transcript nextPutAll: label; space].
  											 printInst value: next]
  										ifFalse:
  											[label ifNotNil: [coInterpreter transcript nextPutAll: label; nextPut: $:; cr].
  											 processor printRegisterState: thing on: coInterpreter transcript]]]]
+ 					ifTrue:
- 					ifFalse:
  						[printInst value: thing]]].
  	coInterpreter transcript flush!



More information about the Vm-dev mailing list