[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