emacs-devel
[Top][All Lists]
Advanced

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

Re: [External] : emacs-28 windows binaries available from alpha


From: Eli Zaretskii
Subject: Re: [External] : emacs-28 windows binaries available from alpha
Date: Sat, 05 Feb 2022 12:10:34 +0200

> Date: Sat, 05 Feb 2022 09:25:56 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: dieter@duenenhof-wilhelm.de, corwin@bru.st, emacs-devel@gnu.org
> 
> > Debugger entered--Lisp error: (error "Cannot find libgccjit library")
> >                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >   error("Cannot find libgccjit library")
> >   comp-ensure-native-compiler()
> >   comp--native-compile((lambda (arg0 &optional arg1 arg2 arg3) (let ((f 
> > #'read-buffer)) (funcall f arg0 arg1 arg2 arg3))) nil 
> > "d:/usr/drew/.emacs.d/eln-cache/28.0.91-bfc49136/su...")
> >   comp-trampoline-compile(read-buffer)
> >   comp-subr-trampoline-install(read-buffer)
> >   defalias(read-buffer #f(compiled-function (prompt &optional default 
> > require-match predicate) #<bytecode 0x1283e7579f6aadb2>))
> >   load-file("~/drews-lisp-20/strings.elc")
> >   funcall-interactively(load-file "~/drews-lisp-20/strings.elc")
> >   command-execute(load-file record)
> >   execute-extended-command(nil "load-file" "load-f")
> >   funcall-interactively(execute-extended-command nil "load-file" "load-f")
> >   command-execute(execute-extended-command)
> 
> Andrea, is this expected on a machine that lacks libgccjit?  Under
> what conditions would loading a .elc file trigger native-compilation
> of a trampoline?
> 
> If this is expected, I'd prefer that we detected the unavailability of
> libgccjit earlier, and avoided the attempt to compile a trampoline in
> the first place.  Can this be done safely enough to make the change on
> the release branch?

Andrea, how about the following patch (which assumes
comp-enable-subr-trampolines enables and disables only generation of
new trampolines, but doesn't affect the use of existing trampolines)?
Is this safe for the release branch, in your opinion?

diff --git a/src/comp.c b/src/comp.c
index 188dc6e..ba65837 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -434,6 +434,13 @@ load_gccjit_if_necessary (bool mandatory)
       gccjit_initialized = init_gccjit_functions ();
       status = gccjit_initialized ? Qt : Qnil;
       Vlibrary_cache = Fcons (Fcons (Qgccjit, status), Vlibrary_cache);
+      /* Disable deferred async compilation and trampoline synthesis
+        in this session, since libgccjit is not available.  */
+      if (!gccjit_initialized)
+       {
+         native_comp_deferred_compilation = false;
+         comp_enable_subr_trampolines = false;
+       }
     }
 
   if (mandatory && !gccjit_initialized)



reply via email to

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