From ef5890ebafb7cd2fbf9acf161edb55fe1382871c Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Fri, 21 Mar 2014 11:01:39 -0700 Subject: [PATCH] win32.S: Use shifting for multiplication rather than repeated addition The jump table code added a register to itself twice to multiply by 4; shift the register left by 2 instead. --- src/x86/win32.S | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/x86/win32.S b/src/x86/win32.S index 5ed1221..b455982 100644 --- a/src/x86/win32.S +++ b/src/x86/win32.S @@ -568,8 +568,7 @@ USCORE_SYMBOL(ffi_call_win32): .long .Lretstruct4b-.Lstore_table /* FFI_TYPE_SMALL_STRUCT_4B */ .long .Lretstruct-.Lstore_table /* FFI_TYPE_MS_STRUCT */ 1: - add %ecx, %ecx - add %ecx, %ecx + shl $2, %ecx add (%esp),%ecx mov (%ecx),%ecx add (%esp),%ecx @@ -727,8 +726,7 @@ USCORE_SYMBOL(ffi_closure_SYSV): .long .Lcls_retmsstruct-.Lcls_store_table /* FFI_TYPE_MS_STRUCT */ 1: - add %eax, %eax - add %eax, %eax + shl $2, %eax add (%esp),%eax mov (%eax),%eax add (%esp),%eax @@ -879,8 +877,7 @@ USCORE_SYMBOL(ffi_closure_raw_SYSV): .long .Lrcls_retstruct4-.Lrcls_store_table /* FFI_TYPE_SMALL_STRUCT_4B */ .long .Lrcls_retstruct-.Lrcls_store_table /* FFI_TYPE_MS_STRUCT */ 1: - add %eax, %eax - add %eax, %eax + shl $2, %eax add (%esp),%eax mov (%eax),%eax add (%esp),%eax @@ -1005,8 +1002,7 @@ USCORE_SYMBOL(ffi_closure_STDCALL): .long .Lscls_retstruct2-.Lscls_store_table /* FFI_TYPE_SMALL_STRUCT_2B */ .long .Lscls_retstruct4-.Lscls_store_table /* FFI_TYPE_SMALL_STRUCT_4B */ 1: - add %eax, %eax - add %eax, %eax + shl $2, %eax add (%esp),%eax mov (%eax),%eax add (%esp),%eax -- 2.34.1