bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#53497: 29.0.50; native-compile after restarting Emacs


From: Arash Esbati
Subject: bug#53497: 29.0.50; native-compile after restarting Emacs
Date: Wed, 26 Jan 2022 12:25:43 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50

Eli Zaretskii <eliz@gnu.org> writes:

> Step through the code of maybe_defer_native_compilation with the 'n'
> command, and see if it calls native--compile-async in this fragment:
>
>   /* This is so deferred compilation is able to compile comp
>      dependencies breaking circularity.  */
>   if (!NILP (Ffeaturep (Qcomp, Qnil)))
>     {
>       /* Comp already loaded.  */
>       if (!NILP (delayed_sources))
>       {
>         CALLN (Ffuncall, intern_c_string ("native--compile-async"),
>                delayed_sources, Qnil, Qlate);
>         delayed_sources = Qnil;
>       }
>       Fputhash (function_name, definition, Vcomp_deferred_pending_h);
>       CALLN (Ffuncall, intern_c_string ("native--compile-async"),
>            src, Qnil, Qlate);
>     }

This part looks like this for me:

  /* This is so deferred compilation is able to compile comp
     dependencies breaking circularity.  */
  if (comp__loadable)
    {
      /* Startup is done, comp is usable.  */
      Frequire (Qcomp, Qnil, Qnil);
      Fputhash (function_name, definition, Vcomp_deferred_pending_h);
      CALLN (Ffuncall, intern_c_string ("native--compile-async"),
             src, Qnil, Qlate);
    }
  else
    Vcomp__delayed_sources = Fcons (src, Vcomp__delayed_sources);

> Does one of these early returns indeed happen?

No, early returns don't happen, but if (comp__loadable) goes into the
else part.  This is the part in GDB with Emacs b373c8ad71:

Thread 1 hit Breakpoint 1, maybe_defer_native_compilation 
(function_name=0xffff82e3c49e4338, definition=0x2d9d16a5345) at comp.c:5104
warning: Source file is more recent than executable.
5104      if (!load_gccjit_if_necessary (false))
(gdb) n
[New Thread 21916.0x5878]
5107      if (!native_comp_deferred_compilation
(gdb) n
5108          || noninteractive
(gdb) n
5109          || !NILP (Vpurify_flag)
(gdb) n
5110          || !COMPILEDP (definition)
(gdb) n
5111          || !STRINGP (Vload_true_file_name)
(gdb) n
5112          || !suffix_p (Vload_true_file_name, ".elc")
(gdb) n
5113          || !NILP (Fgethash (Vload_true_file_name, 
V_comp_no_native_file_h, Qnil)))
(gdb) n
5117        concat2 (CALL1I (file-name-sans-extension, Vload_true_file_name),
(gdb) n
[New Thread 21916.0x2fb0]
5119      if (NILP (Ffile_exists_p (src)))
(gdb) n
5128      if (comp__loadable)
(gdb) n
5137        Vcomp__delayed_sources = Fcons (src, Vcomp__delayed_sources);
(gdb) n
5138    }

Again, many thanks for your patience.

Best, Arash





reply via email to

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