[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