Windows/x64/LJ_GC64: Fix math.frexp() and math.modf() (again).

Thanks to Peter Cawley.
This commit is contained in:
Mike Pall 2016-03-31 04:17:21 +02:00
parent 6e623b9914
commit 296f0ca8d7

View File

@ -1804,12 +1804,12 @@ static void build_subroutines(BuildCtx *ctx)
| jmp ->fff_res1 | jmp ->fff_res1
| |
|.ffunc_n math_frexp |.ffunc_n math_frexp
| mov RB, BASE
|.if X64WIN |.if X64WIN
| lea CARG2, TMP1 | lea CARG2, TMP1 // Caveat: CARG2 == BASE
|.else |.else
| lea CARG1, TMP1 | lea CARG1, TMP1
|.endif |.endif
| mov RB, BASE
| call extern frexp | call extern frexp
| mov BASE, RB | mov BASE, RB
| mov RBd, TMP1d | mov RBd, TMP1d
@ -1826,13 +1826,12 @@ static void build_subroutines(BuildCtx *ctx)
| jmp ->fff_res | jmp ->fff_res
| |
|.ffunc_n math_modf |.ffunc_n math_modf
| mov RB, BASE
|.if X64WIN |.if X64WIN
| lea CARG2, [BASE-16] | lea CARG2, [BASE-16] // Caveat: CARG2 == BASE
|.else |.else
| lea CARG1, [BASE-16] | lea CARG1, [BASE-16]
|.endif |.endif
| mov PC, [BASE-8]
| mov RB, BASE
| call extern modf | call extern modf
| mov BASE, RB | mov BASE, RB
| mov PC, [BASE-8] | mov PC, [BASE-8]