Eliot Miranda uploaded a new version of Cog to project VM Maker: http://source.squeak.org/VMMaker/Cog-eem.343.mcz
==================== Summary ====================
Name: Cog-eem.343 Author: eem Time: 29 May 2017, 8:52:07.276334 am UUID: 1930114c-32c6-4acc-8c08-0b9e2aca3bfb Ancestors: Cog-eem.341
Fix saving the argument registers to the shadow stack space in smashCallerSavedRegistersWithValuesFrom:by:in:; aMemory is one-relative, not 0-relative.
=============== Diff against Cog-eem.341 ===============
Item was changed: ----- Method: BochsX64Alien>>smashCallerSavedRegistersWithValuesFrom:by:in: (in category 'accessing-abstract') ----- smashCallerSavedRegistersWithValuesFrom: base by: step in: aMemory | volatileRegisters | CogX64Compiler isSysV ifTrue: [volatileRegisters := #(rax: rcx: rdx: rsi: rdi: r8: r9: r10: r11:)] ifFalse: "We should also save the registers to the shadow parameter space." [volatileRegisters := #(rax: rcx: rdx: r8: r9: r10: r11:). #(rcx rdx r8 r9) withIndexDo: [:getter :index| aMemory + unsignedLong64At: self rbp + 9 + (index * 8) "skip saved fp and retpc; aMemory is 1-relative" - unsignedLong64At: self rbp + 8 + (index * 8) "skip saved fp and retpc" put: (self perform: getter)]]. volatileRegisters withIndexDo: [:setter :index| self perform: setter with: index - 1 * step + base]!
vm-dev@lists.squeakfoundation.org