[Vm-dev] VM Maker: VMMaker.oscog-eem.1089.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Mar 12 20:51:28 UTC 2015


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1089.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.1089
Author: eem
Time: 12 March 2015, 1:49:08.029 pm
UUID: 6d131d84-5bb4-469d-984b-8750f8432147
Ancestors: VMMaker.oscog-eem.1088

Implement genRestoreRegs and improve comments.
Use = instead of == in genRestoreRegsExcept:

=============== Diff against VMMaker.oscog-eem.1088 ===============

Item was removed:
- ----- Method: CogARMCompiler>>genRestoreRegisters (in category 'abi') -----
- genRestoreRegisters
- 	"Load the general purpose registers after the return of a trampoline call."
- 	"Because no registers were saved we don't restore any."
- 	"cogit
- 		gen: LDMFD operand: 16r7F"!

Item was added:
+ ----- Method: CogARMCompiler>>genRestoreRegs (in category 'abi') -----
+ genRestoreRegs
+ 	"Restore the general purpose registers for a trampoline call."
+ 	"Restore none, because the ARM ABI only defines callee saved registers, no caller-saved regs."
+ 	"cogit gen: LDMFD operand: 16r7F"!

Item was changed:
  ----- Method: CogARMCompiler>>genSaveRegisters (in category 'abi') -----
  genSaveRegisters
  	"Save the general purpose registers for a trampoline call."
+ 	"Save none, because the ARM ABI only defines callee saved registers, no caller-saved regs."
+ 	"cogit gen: STMFD operand: 16r7F"!
- 	"Save none, because we use only callee saved registers."
- 	"cogit
- 		gen: STMFD operand: 16r7F"!

Item was changed:
  ----- Method: CogIA32Compiler>>genRestoreRegsExcept: (in category 'abi') -----
  genRestoreRegsExcept: abstractReg
  	| realReg |
  	realReg := self concreteRegister: abstractReg.
+ 	realReg = EAX ifTrue: [cogit AddCq: 4 R: ESP] ifFalse: [cogit PopR: EAX].
+ 	realReg = EBX ifTrue: [cogit AddCq: 4 R: ESP] ifFalse: [cogit PopR: EBX].
+ 	realReg = ECX ifTrue: [cogit AddCq: 4 R: ESP] ifFalse: [cogit PopR: ECX].
+ 	realReg = EDX ifTrue: [cogit AddCq: 4 R: ESP] ifFalse: [cogit PopR: EDX].
+ 	realReg = ESI   ifTrue: [cogit AddCq: 4 R: ESP] ifFalse: [cogit PopR: ESI].
+ 	realReg = EDI   ifTrue: [cogit AddCq: 4 R: ESP] ifFalse: [cogit PopR: EDI].
- 	realReg == EAX ifTrue: [cogit AddCq: 4 R: ESP] ifFalse: [cogit PopR: EAX].
- 	realReg == EBX ifTrue: [cogit AddCq: 4 R: ESP] ifFalse: [cogit PopR: EBX].
- 	realReg == ECX ifTrue: [cogit AddCq: 4 R: ESP] ifFalse: [cogit PopR: ECX].
- 	realReg == EDX ifTrue: [cogit AddCq: 4 R: ESP] ifFalse: [cogit PopR: EDX].
- 	realReg == ESI   ifTrue: [cogit AddCq: 4 R: ESP] ifFalse: [cogit PopR: ESI].
- 	realReg == EDI   ifTrue: [cogit AddCq: 4 R: ESP] ifFalse: [cogit PopR: EDI].
  	^0!



More information about the Vm-dev mailing list