emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] feature/libjit 9c0ed03: Fix 32-bit compilation on MS-Windo


From: Eli Zaretskii
Subject: [Emacs-diffs] feature/libjit 9c0ed03: Fix 32-bit compilation on MS-Windows
Date: Sat, 18 Aug 2018 05:20:16 -0400 (EDT)

branch: feature/libjit
commit 9c0ed03e5293e327849b0da335e89ee00eeadb4d
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Fix 32-bit compilation on MS-Windows
    
    * src/jit.c (CONSTANT): Avoid compilation warning on 32-bit
    systems about casting a pointer to an integer of a different
    size.
    (compile) [HAVE__SETJMP]: Use _setjmp instead of setjmp, when
    the latter is a macro.  Fixes a compilation error on system
    that use _setjmp.
    (Fjit_disassemble_to_string): Rearrange declaration to avoid
    compilation warnings on systems that don't have open_memstream.
---
 src/jit.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/jit.c b/src/jit.c
index 94a83d2..3521ed5 100644
--- a/src/jit.c
+++ b/src/jit.c
@@ -58,7 +58,7 @@ static jit_type_t ptrdiff_t_type;
 
 /* Make a pointer constant.  */
 #define CONSTANT(FUNC, VAL) \
-  jit_value_create_long_constant (FUNC, jit_type_void_ptr, (jit_long) (VAL))
+  jit_value_create_long_constant (FUNC, jit_type_void_ptr, (jit_long) 
(uintptr_t) (VAL))
 
 /* Fetch the next byte from the bytecode stream.  */
 
@@ -1318,9 +1318,15 @@ compile (ptrdiff_t bytestr_length, unsigned char 
*bytestr_data,
 
            /* FIXME probably should be using the same as the rest of
               emacs.  */
+#ifdef HAVE__SETJMP
+           cond = jit_insn_call_native (func, "sys_setjmp", _setjmp,
+                                        setjmp_signature,
+                                        &jmp, 1, JIT_CALL_NOTHROW);
+#else
            cond = jit_insn_call_native (func, "sys_setjmp", setjmp,
                                         setjmp_signature,
                                         &jmp, 1, JIT_CALL_NOTHROW);
+#endif
            PUSH_PC (pc);
            jit_insn_branch_if_not (func, cond, &labels[pc]);
 
@@ -2232,24 +2238,24 @@ DEFUN ("jit-disassemble-to-string", 
Fjit_disassemble_to_string,
        doc: /* Disassemble a JIT-compiled function and return a string with 
the disassembly.  */)
   (Lisp_Object func)
 {
-  char *buffer = NULL;
-  size_t size = 0;
   FILE *stream;
-  Lisp_Object str;
   struct Lisp_Vector *vec;
   jit_function_t cfunc;
   struct subr_function *sfunc;
 
   if (!COMPILEDP (func))
     error ("Not a byte-compiled function");
-
-#ifdef HAVE_OPEN_MEMSTREAM
   vec = XVECTOR (func);
   sfunc = (struct subr_function *) vec->contents[COMPILED_JIT_CODE];
   if (sfunc == NULL)
     error ("Not JIT-compiled");
 
   cfunc = jit_function_from_closure (emacs_jit_context, sfunc->function.a0);
+
+#ifdef HAVE_OPEN_MEMSTREAM
+  Lisp_Object str;
+  char *buffer = NULL;
+  size_t size = 0;
   stream = open_memstream (&buffer, &size);
   jit_dump_function (stream, cfunc, "Function");
   fclose (stream);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]