Eliot Miranda uploaded a new version of Cog to project VM Maker: http://source.squeak.org/VMMaker/Cog-eem.425.mcz ==================== Summary ==================== Name: Cog-eem.425 Author: eem Time: 30 October 2020, 10:57:07.489163 pm UUID: c3bf37ca-a5fd-43e4-bab0-68e08a0cbe86 Ancestors: Cog-eem.424 smashCallerSavedRegistersWithValuesFrom:by:in: is not a good idea. smashCallerSavedRegistersWithValuesFrom:by: is just fine. And we do need abiUnmarshal: for x86. =============== Diff against Cog-eem.424 =============== Item was added: + ----- Method: BochsIA32Alien>>abiUnmarshal: (in category 'accessing-abstract') ----- + abiUnmarshal: nArgs + "Remove nArgs form teh stack of a leaf call" + self esp: self esp + (nArgs * 4)! Item was added: + ----- Method: BochsIA32Alien>>smashCallerSavedRegistersWithValuesFrom:by: (in category 'accessing-abstract') ----- + smashCallerSavedRegistersWithValuesFrom: base by: step + #(eax: ecx: edx:) withIndexDo: + [:accessor :index| + self perform: accessor with: index - 1 * step + base]! Item was removed: - ----- Method: BochsIA32Alien>>smashCallerSavedRegistersWithValuesFrom:by:in: (in category 'accessing-abstract') ----- - smashCallerSavedRegistersWithValuesFrom: base by: step in: aMemory - #(eax: ecx: edx:) - withIndexDo: - [:accessor :index| - self perform: accessor with: index - 1 * step + base]! Item was added: + ----- Method: BochsX64Alien>>smashCallerSavedRegistersWithValuesFrom:by: (in category 'accessing-abstract') ----- + smashCallerSavedRegistersWithValuesFrom: base by: step + CogX64Compiler callerSavedRegisterSetters withIndexDo: + [:setter :index| + self perform: setter with: index - 1 * step + base]! Item was removed: - ----- 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" - put: (self perform: getter)]]. - volatileRegisters withIndexDo: - [:setter :index| - self perform: setter with: index - 1 * step + base]! Item was added: + ----- Method: CogProcessorAlien>>abiUnmarshal: (in category 'accessing-abstract') ----- + abiUnmarshal: nArgs + "This is a default for RISCs; assume arguments have been passed in registers and that there is nothing to do."! Item was added: + ----- Method: GdbARMAlien>>smashCallerSavedRegistersWithValuesFrom:by: (in category 'accessing-abstract') ----- + smashCallerSavedRegistersWithValuesFrom: base by: step + #(r0: r1: r2: r3: r9: r12: lr:) withIndexDo: + [:accessor :index| + self perform: accessor with: index - 1 * step + base]! Item was removed: - ----- Method: GdbARMAlien>>smashCallerSavedRegistersWithValuesFrom:by:in: (in category 'accessing-abstract') ----- - smashCallerSavedRegistersWithValuesFrom: base by: step in: aMemory - #(r0: r1: r2: r3: r9: r12: lr:) withIndexDo: - [:accessor :index| - self perform: accessor with: index - 1 * step + base]! Item was added: + ----- Method: MIPSSimulator>>smashCallerSavedRegistersWithValuesFrom:by: (in category 'processor api') ----- + smashCallerSavedRegistersWithValuesFrom: base by: step + "i.e., smashVolatileRegisters" + self flag: #OABI. + self unsignedRegister: AT put: 0 * step + base. + self unsignedRegister: V0 put: 1 * step + base. + self unsignedRegister: V1 put: 2 * step + base. + self unsignedRegister: A0 put: 3 * step + base. + self unsignedRegister: A1 put: 4 * step + base. + self unsignedRegister: A2 put: 5 * step + base. + self unsignedRegister: A3 put: 6 * step + base. + self unsignedRegister: T0 put: 7 * step + base. + self unsignedRegister: T1 put: 8 * step + base. + self unsignedRegister: T2 put: 9 * step + base. + self unsignedRegister: T3 put: 10 * step + base. + self unsignedRegister: T4 put: 11 * step + base. + self unsignedRegister: T5 put: 12 * step + base. + self unsignedRegister: T6 put: 13 * step + base. + self unsignedRegister: T7 put: 14 * step + base. + self unsignedRegister: T8 put: 15 * step + base. + self unsignedRegister: T9 put: 16 * step + base. + self unsignedRegister: GP put: 17 * step + base. + self unsignedRegister: RA put: 18 * step + base! Item was removed: - ----- Method: MIPSSimulator>>smashCallerSavedRegistersWithValuesFrom:by:in: (in category 'processor api') ----- - smashCallerSavedRegistersWithValuesFrom: base by: step in: aMemory - "i.e., smashVolatileRegisters" - self flag: #OABI. - self unsignedRegister: AT put: 0 * step + base. - self unsignedRegister: V0 put: 1 * step + base. - self unsignedRegister: V1 put: 2 * step + base. - self unsignedRegister: A0 put: 3 * step + base. - self unsignedRegister: A1 put: 4 * step + base. - self unsignedRegister: A2 put: 5 * step + base. - self unsignedRegister: A3 put: 6 * step + base. - self unsignedRegister: T0 put: 7 * step + base. - self unsignedRegister: T1 put: 8 * step + base. - self unsignedRegister: T2 put: 9 * step + base. - self unsignedRegister: T3 put: 10 * step + base. - self unsignedRegister: T4 put: 11 * step + base. - self unsignedRegister: T5 put: 12 * step + base. - self unsignedRegister: T6 put: 13 * step + base. - self unsignedRegister: T7 put: 14 * step + base. - self unsignedRegister: T8 put: 15 * step + base. - self unsignedRegister: T9 put: 16 * step + base. - self unsignedRegister: GP put: 17 * step + base. - self unsignedRegister: RA put: 18 * step + base! |
Free forum by Nabble | Edit this page |