Просмотр исходного кода

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

Thanks to Peter Cawley.
Mike Pall 9 лет назад
Родитель
Сommit
296f0ca8d7
1 измененных файлов с 4 добавлено и 5 удалено
  1. 4 5
      src/vm_x64.dasc

+ 4 - 5
src/vm_x64.dasc

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