Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3342.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3342 Author: eem Time: 16 November 2023, 2:11:03.533653 pm UUID: b6a11345-5cc3-4e15-bb9a-087e415144e3 Ancestors: VMMaker.oscog-eem.3341
Better disassembly decoration for full blocks.
=============== Diff against VMMaker.oscog-eem.3341 ===============
Item was changed: ----- Method: Cogit>>lookupAddress: (in category 'disassembly') ----- lookupAddress: address <doNotGenerate> address < methodZone freeStart ifTrue: [^address >= methodZoneBase ifTrue: [(methodZone methodFor: address) ifNotNil: [:cogMethod| + (self methodSelectorStringFor: cogMethod), - ((cogMethod selector ~= objectMemory nilObject - and: [objectRepresentation couldBeObject: cogMethod selector]) - ifTrue: [coInterpreter stringOf: cogMethod selector] - ifFalse: [cogMethod asInteger hex]), '@', ((address - cogMethod asInteger) hex allButFirst: 3)]] ifFalse: [(self trampolineRangeFor: address) ifNotNil: [:range| (self codeEntryNameFor: range first) ifNotNil: [:name| name, (address = range first ifTrue: [''] ifFalse: [' + ', (address - range first) hex])]]]]. (simulatedTrampolines includesKey: address) ifTrue: [^self labelForSimulationAccessor: (simulatedTrampolines at: address)]. (simulatedVariableGetters includesKey: address) ifTrue: ["In methods varBaseAddress is typically stackLimitFromMachineCode, but in trampolines it is typically varBaseAddress..." (varBaseAddress isInteger and: [address = varBaseAddress and: [disassemblingMethod isNil]]) ifTrue: [^'VarBaseAddress']. ^self labelForSimulationAccessor: (simulatedVariableGetters at: address)]. ^(coInterpreter lookupAddress: address) ifNil: [address = self cStackPointerAddress ifTrue: [#CStackPointer] ifFalse: [address = self cFramePointerAddress ifTrue: [#CFramePointer]]]!
Item was added: + ----- Method: Cogit>>methodSelectorStringFor: (in category 'disassembly') ----- + methodSelectorStringFor: cogMethod + "Answer either the hex string or the selector for a method, if it has a valid selector. + For full blocks, prepend ``[full] '' to the selector." + <doNotGenerate> + cogMethod cmIsFullBlock ifTrue: + [(coInterpreter maybeSelectorOfMethod: cogMethod methodObject) ifNotNil: + [:selector| + ^'[full] ', ((objectRepresentation couldBeObject: selector) + ifTrue: [coInterpreter stringOf: selector] + ifFalse: [cogMethod asInteger hex])]]. + + (cogMethod selector ~= objectMemory nilObject + and: [objectRepresentation couldBeObject: cogMethod selector]) ifTrue: + [^coInterpreter stringOf: cogMethod selector]. + + ^cogMethod asInteger hex!
vm-dev@lists.squeakfoundation.org