Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3108.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3108 Author: eem Time: 21 November 2021, 3:37:59.732972 pm UUID: ee6b672e-6205-44d8-ac40-35fae3491f9e Ancestors: VMMaker.oscog-eem.3107
Cog simulation: Fix simulation of ioHighResClock in the memoryOffset regime. Add missing initialCStackAddress methods. Fix a slip in bitAndByteOffsetOfIsFullBlockBitInto:
=============== Diff against VMMaker.oscog-eem.3107 ===============
Item was added: + ----- Method: CoInterpreter>>initialCStackAddress (in category 'simulation only') ----- + initialCStackAddress + <doNotGenerate> + ^self rumpCStackAddress!
Item was added: + ----- Method: CoInterpreterMT>>initialCStackAddress (in category 'simulation only') ----- + initialCStackAddress + <doNotGenerate> + ^(self cStackRangeForThreadIndex: 1) last!
Item was changed: ----- Method: CogObjectRepresentationFor64BitSpur>>bitAndByteOffsetOfIsFullBlockBitInto: (in category 'in-line cacheing') ----- bitAndByteOffsetOfIsFullBlockBitInto: aBlock <inline: true> "This supplies the bitmask for the isFullBlock bit, and the offset of the byte containing that bit in a CogMethod header to aBlock. We don't have named variables holding this offset. The following assert tests whether the values are correct by creating a surrogate on an empty ByteArray, setting the bit, and checking that the expected values are set in the ByteArray." self cCode: [] inSmalltalk: [| pragma | + pragma := (CogMethodSurrogate >> #cpicHasMNUCaseOrCMIsFullBlock) - pragma := (CogMethodSurrogate64 >> #cpicHasMNUCaseOrCMIsFullBlock) pragmaAt: #bitPosition:width:. self assert: pragma arguments = #(12 "4th bit of 2nd byte after objectHeader" 1)]. aBlock value: 16 value: objectMemory baseHeaderSize + 1 "zero-relative"!
Item was added: + ----- Method: CogVMSimulator>>initialCStackAddress (in category 'multi-threading simulation switch') ----- + initialCStackAddress + "This method includes or excludes CoInterpreterMT methods as required. + Auto-generated by CogVMSimulator>>ensureMultiThreadingOverridesAreUpToDate" + + ^self perform: #initialCStackAddress + withArguments: {} + inSuperclass: (cogThreadManager ifNil: [CoInterpreterPrimitives] ifNotNil: [CoInterpreterMT])!
Item was changed: ----- Method: CogVMSimulator>>printRumpCStackFrom:to:cfp:csp: (in category 'rump c stack') ----- printRumpCStackFrom: start to: address cfp: cfp csp: csp + transcript ensureCr. address to: start by: objectMemory wordSize negated do: [:addr| | ptrName value | self printHex: addr. addr = cogit processor sp ifTrue: [ptrName := ' sp']. addr = cogit processor fp ifTrue: [ptrName := (ptrName ifNil: [''] ifNotNil: [ptrName, ',']), 'fp']. addr = csp ifTrue: [ptrName := (ptrName ifNil: [''] ifNotNil: [ptrName, ',']), 'CSP']. addr = cfp ifTrue: [ptrName := (ptrName ifNil: [''] ifNotNil: [ptrName, ',']), 'CFP']. ptrName ifNil: [self tab] ifNotNil: [self print: ' ', ptrName, '->']. self tab; printHex: (value := objectMemory longAt: addr). (cogit lookupAddress: value) ifNotNil: [:label| self print: ' ', label]. self cr]!
Item was changed: ----- Method: Cogit>>ioHighResClock (in category 'simulation only') ----- ioHighResClock <doNotGenerate> + | end limit memory savedsp | - | end memory savedsp | end := self class guardPageSize. + limit := end + objectRepresentation wordSize. memory := coInterpreter memory. (coInterpreter isOnRumpCStack: (savedsp := processor sp)) ifFalse: [processor sp: (coInterpreter heapBase bitAnd: (cStackAlignment - 1) bitInvert)]. processor simulateLeafCallOf: ioHighResClock nextpc: end memory: memory. [processor pc ~= end] whileTrue: [processor singleStepIn: memory minimumAddress: ioHighResClock + readOnlyBelow: limit]. - readOnlyBelow: end]. processor sp: savedsp. + objectRepresentation wordSize = 8 ifTrue: - backEnd class wordSize = 8 ifTrue: [^processor cResultRegister]. ^(processor cResultRegisterHigh bitShift: 32) + processor cResultRegister
"self disassembleFrom: ioHighResClock to: self class guardPageSize"!
vm-dev@lists.squeakfoundation.org