VM Maker: Cog-eem.376.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: Cog-eem.376.mcz

commits-2
 
Eliot Miranda uploaded a new version of Cog to project VM Maker:
http://source.squeak.org/VMMaker/Cog-eem.376.mcz

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

Name: Cog-eem.376
Author: eem
Time: 15 December 2019, 12:23:00.268258 pm
UUID: 330b467e-b08a-42c1-a2f8-1097f3598342
Ancestors: Cog-eem.375

We don't need no steenkin' execution simulation category...

=============== Diff against Cog-eem.375 ===============

Item was changed:
+ ----- Method: GdbARMAlien>>simulateCallOf:nextpc:memory: (in category 'execution') -----
- ----- Method: GdbARMAlien>>simulateCallOf:nextpc:memory: (in category 'execution simulation') -----
  simulateCallOf: address nextpc: nextpc memory: aMemory
  "Simulate a frame-building call of address.  Build a frame since
  a) this is used for calls into the run-time which are unlikely to be leaf-calls"
  "This method builds a stack frame as expected by the simulator, not as defined by ARM aapcs-abi.
  In ARM aapcs, every method can define for itself, wether it wants to push lr (nextpc), and wether it
  uses a frame pointer. The standard never mentions a fp. It merely defines r4-r11 to be callee-saved."
 
  self pushWord: self lr in: aMemory.
  self pushWord: self fp in: aMemory.
  self fp: self sp.
  PostBuildStackDelta ~= 0 ifTrue:
  [self sp: self sp - PostBuildStackDelta]. "In order to satisfy the CStackAlignment check by cogit, which is only valid on IA32 platforms."
  self pc: address!

Item was changed:
+ ----- Method: GdbARMAlien>>simulateJumpCallOf:memory: (in category 'execution') -----
- ----- Method: GdbARMAlien>>simulateJumpCallOf:memory: (in category 'execution simulation') -----
  simulateJumpCallOf: address memory: aMemory
  "Simulate a frame-building jump of address.  Build a frame since
  a) this is used for calls into the run-time which are unlikely to be leaf-calls"
  "This method builds a stack frame as expected by the simulator, not as defined by ARM aapcs-abi.
  In ARM aapcs, every method can define for itself, wether it wants to push lr (nextpc), and wether it
  uses a frame pointer. The standard never mentions a fp. It merely defines r4-r11 to be callee-saved."
 
  self assert: self sp \\ 8 = 0. "This check ensures, that we conform with ARM abi. Before doing anything to the stack, we ensure 2-word alignment."
  self pushWord: self lr in: aMemory.
  self pushWord: self fp in: aMemory.
  self fp: self sp.
  PostBuildStackDelta ~= 0 ifTrue:
  [self sp: self sp - PostBuildStackDelta]. "In order to satisfy the CStackAlignment check by cogit, which is only valid on IA32 platforms."
  self pc: address!

Item was changed:
+ ----- Method: GdbARMAlien>>simulateLeafCallOf:nextpc:memory: (in category 'execution') -----
- ----- Method: GdbARMAlien>>simulateLeafCallOf:nextpc:memory: (in category 'execution simulation') -----
  simulateLeafCallOf: address nextpc: nextpc memory: aMemory
  self lr: nextpc.
  self pc: address!

Item was changed:
+ ----- Method: GdbARMAlien>>simulateLeafReturnIn: (in category 'execution') -----
- ----- Method: GdbARMAlien>>simulateLeafReturnIn: (in category 'execution simulation') -----
  simulateLeafReturnIn: aMemory
  self pc: self lr!

Item was changed:
+ ----- Method: GdbARMAlien>>simulateReturnIn: (in category 'execution') -----
- ----- Method: GdbARMAlien>>simulateReturnIn: (in category 'execution simulation') -----
  simulateReturnIn: aMemory
  PostBuildStackDelta ~= 0 ifTrue:
  [self sp: self sp + PostBuildStackDelta].
  self fp: (self popWordIn: aMemory).
  "According to tpr, most C compilers implement return by simply
  popping into the pc, rather than popping through the link register."
  self pc: (self popWordIn: aMemory)!