Eliot Miranda uploaded a new version of Cog to project VM Maker: http://source.squeak.org/VMMaker/Cog-eem.450.mcz
==================== Summary ====================
Name: Cog-eem.450 Author: eem Time: 22 February 2022, 5:01:24.292926 pm UUID: 5598d2df-ceec-431e-be4f-29b1458b907f Ancestors: Cog-eem.449
Fix disassembleInstructionAt:In: to work for the simulation case (Spur uses a memory offset to implement a null pointer trap) and the development case (no memoryOffset when disassembling freshly generated machine code in a CogAbstractInstruction).
Update primitiveMemoryOffset to use the new metadata style.
=============== Diff against Cog-eem.449 ===============
Item was changed: ----- Method: CogProcessorAlien>>disassembleInstructionAt:In: (in category 'disassembly') ----- disassembleInstructionAt: pc In: memory + "This is hacked to meet two different needs. With back end development (subclasses of + CogAbstractInstruction) we want to disassemble individual instructions in these objects, + and have to remove memoryOffset. + With the broader simulation we want to disassemble instructions in the simulation memory + (e.g. for a CogProcessorInspector), and so the memoryOffset is required (it is implicit)." + ^(self primitiveDisassembleAt: (memory size < 524288 + ifTrue: [pc + self memoryOffset] + ifFalse: [pc]) + inMemory: memory) last! - ^(self primitiveDisassembleAt: pc inMemory: memory) last!
Item was changed: ----- Method: ProcessorSimulatorPlugin>>primitiveMemoryOffset (in category 'primitives') ----- primitiveMemoryOffset "Get or set the memory offset. If non-zero the memry offset is one word (4 or 8 bytes), to marry with the SuprMemoryManager simulators discarding of the first word of memory as a null pointer trap." + <export: true> + <primitiveMetadata: #(FastCPrimitiveFlag)> - <export: true flags: #(FastCPrimitiveFlag)> | offset previousValue | interpreterProxy methodArgumentCount = 0 ifTrue: [^interpreterProxy methodReturnInteger: memoryOffset]. interpreterProxy methodArgumentCount ~= 1 ifTrue: [^interpreterProxy primitiveFailFor: PrimErrBadNumArgs]. offset := interpreterProxy stackValue: 0. (interpreterProxy isIntegerObject: offset) ifFalse: [^interpreterProxy primitiveFailFor: PrimErrBadArgument]. previousValue := memoryOffset. memoryOffset := interpreterProxy integerValueOf: offset. ^interpreterProxy methodReturnInteger: previousValue!
vm-dev@lists.squeakfoundation.org