VM Maker: Cog-eem.343.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.343.mcz

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

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

Name: Cog-eem.343
Author: eem
Time: 29 May 2017, 8:52:07.276334 am
UUID: 1930114c-32c6-4acc-8c08-0b9e2aca3bfb
Ancestors: Cog-eem.341

Fix saving the argument registers to the shadow stack space in smashCallerSavedRegistersWithValuesFrom:by:in:; aMemory is one-relative, not 0-relative.

=============== Diff against Cog-eem.341 ===============

Item was changed:
  ----- 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"
- unsignedLong64At: self rbp + 8 + (index * 8) "skip saved fp and retpc"
  put: (self perform: getter)]].
  volatileRegisters withIndexDo:
  [:setter :index|
  self perform: setter with: index - 1 * step + base]!