浏览代码

x86/x64: Fix argument check for bit shifts.

Mike Pall 10 年之前
父节点
当前提交
9622d6b8b2
共有 1 个文件被更改,包括 7 次插入3 次删除
  1. 7 3
      src/vm_x86.dasc

+ 7 - 3
src/vm_x86.dasc

@@ -2564,8 +2564,8 @@ static void build_subroutines(BuildCtx *ctx)
   |
   |.define TOBIT_BIAS, 0x59c00000	// 2^52 + 2^51 (float, not double!).
   |
-  |.macro .ffunc_bit, name, kind
-  |  .ffunc_1 name
+  |.macro .ffunc_bit, name, kind, fdef
+  |  fdef name
   |.if kind == 2
   |.if SSE
   |  sseconst_tobit xmm1, RBa
@@ -2608,6 +2608,10 @@ static void build_subroutines(BuildCtx *ctx)
   |2:
   |.endmacro
   |
+  |.macro .ffunc_bit, name, kind
+  |  .ffunc_bit name, kind, .ffunc_1
+  |.endmacro
+  |
   |.ffunc_bit bit_tobit, 0
   |.if DUALNUM or SSE
   |.if not SSE
@@ -2681,7 +2685,7 @@ static void build_subroutines(BuildCtx *ctx)
   |
   |.macro .ffunc_bit_sh, name, ins
   |.if DUALNUM
-  |  .ffunc_bit name, 1
+  |  .ffunc_bit name, 1, .ffunc_2
   |  // Note: no inline conversion from number for 2nd argument!
   |  cmp dword [BASE+12], LJ_TISNUM; jne ->fff_fallback
   |  mov RA, dword [BASE+8]