[Vm-dev] VM Maker: Cog-eem.425.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Oct 31 05:57:09 UTC 2020


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!



More information about the Vm-dev mailing list