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

commits at source.squeak.org commits at source.squeak.org
Tue Dec 17 07:55:00 UTC 2019


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

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

Name: VMMaker.oscog-eem.2616
Author: eem
Time: 16 December 2019, 11:54:38.097499 pm
UUID: 44ac8244-d59d-4131-b4c7-a70ece7dc55e
Ancestors: VMMaker.oscog-eem.2615

Simulation:
Robustness for reportLastNInstructions.
Fix in-image compilation now that cFrame/StackPointerAddress are banished from the Cogit in all forms (the in-memory hack for these is gone).
Make sure FullBlockClosure has its own im plementation for shouldStopIfAtPC: (eek!).
Fix a typo.

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

Item was changed:
  ----- Method: CogAbstractInstruction>>hasCmpRSPReg (in category 'testing') -----
  hasCmpRSPReg
  	"Answer if the receiver can do CmpR: anyRegExceptSP R: SPReg.
+ 	 If the answer is false the Cogit assumes that the receiver can do CmpR: SPReg R: anyRegExceptSP.
- 	 If the answerr is false the Cogit assumes that the receiver can do CmpR: SPReg R: anyRegExceptSP.
  	 The back end has to do one or the other, by hook or by crook."
  	^true!

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|
- 		[:thing :idx| | next pc label |
  		skipNext
  			ifTrue: [skipNext := false]
  			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]]]]
- 								 pc := thing at: processor registerStatePCIndex.
- 								 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]]]
  					ifFalse:
  						[printInst value: thing]]].
  	coInterpreter transcript flush!

Item was added:
+ ----- Method: CurrentImageCoInterpreterFacade>>cFramePointerAddress (in category 'accessing') -----
+ cFramePointerAddress
+ 	^self addressForLabel: #CFramePointer!

Item was added:
+ ----- Method: CurrentImageCoInterpreterFacade>>cStackPointerAddress (in category 'accessing') -----
+ cStackPointerAddress
+ 	^self addressForLabel: #CStackPointer!

Item was added:
+ ----- Method: FullBlockClosure>>shouldStopIfAtPC: (in category '*VMMaker-interpreter simulator') -----
+ shouldStopIfAtPC: address
+ 	<primitive: 207>
+ 	^self value: address!



More information about the Vm-dev mailing list