1. Dario Bertini
  2. another-pypy

Commits

David Schneider  committed f5141bd

fix an issue when pushing a vfp value to the stack that was stored in the spilling area of the stack

  • Participants
  • Parent commits 8c20c87
  • Branches arm-backed-float

Comments (0)

Files changed (1)

File pypy/jit/backend/arm/assembler.py

View file
 
     def regalloc_push(self, loc):
         if loc.is_stack():
-            self.regalloc_mov(loc, r.ip)
-            self.mc.PUSH([r.ip.value])
+            if loc.type != FLOAT:
+                scratch_reg = r.ip
+            else:
+                scratch_reg = r.vfp_ip
+            self.regalloc_mov(loc, scratch_reg)
+            self.regalloc_push(scratch_reg)
         elif loc.is_reg():
             self.mc.PUSH([loc.value])
         elif loc.is_vfp_reg():
 
     def regalloc_pop(self, loc):
         if loc.is_stack():
-            self.mc.POP([r.ip.value])
-            self.regalloc_mov(r.ip, loc)
+            if loc.type != FLOAT:
+                scratch_reg = r.ip
+            else:
+                scratch_reg = r.vfp_ip
+            self.regalloc_pop(scratch_reg)
+            self.regalloc_mov(scratch_reg, loc)
         elif loc.is_reg():
             self.mc.POP([loc.value])
         elif loc.is_vfp_reg():