summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/bytecomp.el
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'savannah/master' into native-compAndrea Corallo2021-03-251-51/+20
|\
| * * lisp/emacs-lisp/bytecomp.el: Remember location of unresolved callsStefan Monnier2021-03-191-51/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I've gotten tired of seeing the "function foo not known to be defined" warning without any line number information. So this patch adds as line number the position of the first use of that function in the file (well, approximately, as usual). (byte-compile-unresolved-functions): Add POSITIONs in the alist. (byte-compile-function-warn): Store the current position in `byte-compile-unresolved-functions`. (byte-compile-arglist-warn): Adjust accordingly. (byte-compile-print-syms): Delete unused function. (byte-compile-warn-about-unresolved-functions): Use the stored position to give more precise warnings.
* | Fix `no-byte-compile' native compilation interaction (bug#47169)Andrea Corallo2021-03-161-2/+1
| | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-spill-lap-function): Throw no-native-compile when `byte-native-qualities' are null. * lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): No need to consider `no-byte-compile'.
* | Have `no-byte-compile' implies also `no-native-compile'.Andrea Corallo2021-03-161-1/+2
| | | | | | | | | | | | * lisp/emacs-lisp/comp.el (no-native-compile): Update doctring. * lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): when `no-byte-compile' is set to non-nil it overrides this.
* | * lisp/emacs-lisp/bytecomp.el: Fix native re-compilation (bug#47161).Andrea Corallo2021-03-151-0/+1
| |
* | Merge remote-tracking branch 'savannah/master' into native-compAndrea Corallo2021-03-121-4/+12
|\|
| * * lisp/emacs-lisp/bytecomp.el: Warn about unprefixed vars in `boundp`Stefan Monnier2021-03-071-4/+12
| | | | | | | | | | | | | | (byte-compile--check-prefixed-var): New fun, extracted from `byte-compile--declare-var`. (byte-compile--declare-var): Use it. (byte-compile-maybe-guarded): Use it as well.
* | Implement `no-native-compile' (bug#46983)Andrea Corallo2021-03-121-0/+3
| | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Capture `no-native-compile'. * lisp/emacs-lisp/comp.el (no-native-compile): Define new variable. (comp-spill-lap-function): Throw when `no-native-compile' was captured non-nil. (comp--native-compile): Catch `no-native-compile' if necessary and return nil in case.
* | Merge commit '9cbdf20316' into native-compAndrea Corallo2021-03-091-28/+26
|\|
| * Compile closures that modify their bound vars correctly (Bug#46834)Pip Cet2021-03-021-23/+23
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile--reify-function): Don't move let bindings into the lambda. Don't reverse list of bindings. (byte-compile): Evaluate the return value if it was previously reified. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-reify-function): Add tests.
| * * lisp/emacs-lisp/bytecomp.el: Fix minor regression introduced by pdumpStefan Monnier2021-02-271-2/+3
| | | | | | | | | | | | | | | | After `rm **/*.elc; make` we'd sometimes get loads and loads of unnecessary "Reloading ...". (byte-compile-refresh-preloaded): Don't reload files that are more recent than `temacs` but older than the `.pdmp` file.
| * * lisp/emacs-lisp/cconv.el: Improve line-nb info of unused var warningsStefan Monnier2021-02-261-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of warning about unused vars during the analysis phase of closure conversion, do it in the actual closure conversion by annotating the code with "unused" warnings, so that the warnings get emitted later by the bytecomp phase, like all other warnings, at which point the line-number info is a bit less imprecise. Take advantage of this change to wrap the expressions of unused let-bound vars inside (ignore ...) so the byte-compiler can better optimize them away. Finally, promote `macroexp--warn-and-return` to "official" status by removing its "--" marker. (cconv-captured+mutated, cconv-lambda-candidates): Remove vars. (cconv-var-classification): New var to replace them. (cconv-warnings-only): Delete function. (cconv--warn-unused-msg, cconv--var-classification): New functions. (cconv--convert-funcbody): Add warnings for unused args. (cconv-convert): Add warnings for unused vars in `let` and `condition-case`. (cconv--analyze-use): Don't emit an "unused var" warning any more, but instead remember the fact in `cconv-var-classification`. * lisp/emacs-lisp/bytecomp.el (byte-compile-force-lexical-warnings): Remove variable. (byte-compile-preprocess): Remove corresponding case. * lisp/emacs-lisp/pcase.el (pcase--if): Don't throw away `test` effects. (\`): * lisp/emacs-lisp/cl-macs.el (cl--do-arglist): Use `car-safe` instead of `car`, so it can more easily be removed by the optimizer if the result is not used. * lisp/emacs-lisp/macroexp.el (macroexp--warn-wrap): New function. (macroexp-warn-and-return): Rename from `macroexp--warn-and-return`.
* | Allow for `comp-native-driver-options' to work as a file-local variable.Andrea Corallo2021-03-071-1/+4
| |
* | Merge remote-tracking branch 'savannah/master' into native-compAndrea Corallo2021-02-261-14/+36
|\|
| * * lisp/emacs-lisp/macroexp.el (macroexp-file-name): Work in `eval-buffer`Stefan Monnier2021-02-241-1/+1
| | | | | | | | | | | | | | Rely on `current-load-list` instead of `load-file-name`. * lisp/emacs-lisp/bytecomp.el (byte-compile-close-variables): Change the var we override accordingly.
| * * lisp/emacs-lisp/macroexp.el (macroexp-file-name): New function.Stefan Monnier2021-02-241-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Yes, finally: a function that tells you the name of the file where the code is located. Finding this name is non-trivial in practice, as evidenced by the "4 shift/reduce conflicts" warning when compiling CEDET's python.el, because its `wisent-source` got it wrong in that case, thinking the grammar came from `python.el` instead of `python-wy.el`. While at it, also made `macroexp-compiling-p` public, since it's useful at various places. (macroexp-compiling-p): Rename from `macroexp--compiling-p`. * lisp/emacs-lisp/bytecomp.el (byte-compile-close-variables): Bind `load-file-name` to nil so we can distinguish a load that calls the byte compiler from a byte compilation which causes a load. * lisp/cedet/semantic/wisent/python.el (wisent-python--expected-conflicts): Remove; it was just a workaround. * lisp/subr.el (do-after-load-evaluation): Avoid `byte-compile--` vars. * lisp/cedet/semantic/fw.el (semantic-alias-obsolete): Use `macroexp-compiling-p` and `macroexp-file-name`. * lisp/cedet/semantic/wisent/comp.el (wisent-source): Use `macroexp-file-name` (wisent-total-conflicts): Tighten regexp. * lisp/emacs-lisp/cl-lib.el (cl--compiling-file): Delete function and variable. Use `macroexp-compiling-p` instead. * lisp/progmodes/flymake.el (flymake-log): * lisp/emacs-lisp/package.el (package-get-version): * lisp/emacs-lisp/ert-x.el (ert-resource-directory): Use `macroexp-file-name`.
| * Fix compilation of closures with nontrivial doc stringsMattias Engdegård2021-02-221-14/+31
| | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-make-closure): Use the supplied doc string if it's a literal; fall back to the old slow way of building a closure otherwise.
* | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2021-02-211-10/+18
|\|
| * Faster, more compact, and readable closure creationMattias Engdegård2021-02-211-9/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Simplify closure creation by calling a single function at run time instead of putting it together from small pieces. This is faster (by about a factor 2), takes less space on disk and in memory, and makes internal functions somewhat readable in disassembly listings again. This is done by creating a prototype function at compile-time whose closure variables are placeholder values V0, V1... which can be seen in the disassembly. The prototype is then cloned at run time using the new make-closure function that replaces the placeholders with the actual closure variables. * lisp/emacs-lisp/bytecomp.el (byte-compile-make-closure): Generate call to make-closure from a prototype function. * src/alloc.c (Fmake_closure): New function. (syms_of_alloc): Defsubr it. * src/data.c (syms_of_data): Defsym byte-code-function-p.
| * * lisp/emacs-lisp/bytecomp.el: Don't warn for repeated _ argsStefan Monnier2021-02-191-1/+3
| | | | | | | | | | (byte-compile-check-lambda-list): Skip warnings of repeated arg for those that are declared as unused anyway.
* | Merge remote-tracking branch 'savannah/master' into native-compAndrea Corallo2021-02-171-33/+43
|\|
| * Fix recently introduced bug in `byte-compile-lambda'Lars Ingebrigtsen2021-02-171-11/+11
| | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): Fix recently introduced error when compiling non-lexical commands (bug#46589).
| * Extend the syntax of `interactive' to list applicable modesLars Ingebrigtsen2021-02-141-15/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/lispref/commands.texi (Using Interactive): Document the extended `interactive' form. * doc/lispref/loading.texi (Autoload): Document list-of-modes form. * lisp/emacs-lisp/autoload.el (make-autoload): Pick the list of modes from `interactive' out of the functions. * lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): Allow for the extended `interactive' form. * src/callint.c (Finteractive): Document the extended form. * src/data.c (Finteractive_form): Return the interactive form in the old format (even when there's an extended `interactive') to avoid having other parts of Emacs be aware of this. (Fcommand_modes): New defun. * src/emacs-module.c (GCALIGNED_STRUCT): Allow for modules to return command modes. * src/lisp.h: New function module_function_command_modes.
* | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2021-02-101-2/+1
|\|
| * * lisp/emacs-lisp/macroexp.el: Break cycle with bytecomp/byte-optStefan Monnier2021-02-091-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The recent change in macroexp triggered a cyclic dependency error during eager macroexpansion when neither `bytecomp` nor `byte-opt` had been byte-compiled yet. This fixes it by moving the offending function to macroexp.el. * lisp/emacs-lisp/macroexp.el (macroexp--unfold-lambda): Move from byte-opt.el and rename. (macroexp--expand-all): Use it. * lisp/emacs-lisp/byte-opt.el (byte-compile-unfold-lambda): Move to macroexp.el. (byte-compile-inline-expand, byte-optimize-form-code-walker): * lisp/emacs-lisp/bytecomp.el (byte-compile-form): Use `macroexp--unfold-lambda` instead.
* | Merge remote-tracking branch 'savannah/master' into native-compAndrea Corallo2021-01-241-1/+2
|\|
| * * lisp/emacs-lisp/bytecomp.el (byte-compile--declare-var): Fix warningStefan Monnier2021-01-201-1/+2
| | | | | | | | | | Make sure the "declared after first use" is under the control of the `lexical` option.
* | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2021-01-081-4/+5
|\|
| * Fix obsolete variable warnings about class namesMichael Heerdegen2021-01-061-4/+5
| | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/eieio-core.el (eieio-defclass-autoload): Try to make the wording of the warning about the obsoleted variable less confusing. * lisp/emacs-lisp/bytecomp.el (byte-compile-check-variable): Don't warn for lexical variables (Bug#39169). Fix spurious `or'. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp/warn-obsolete-variable-bound\.el): New test. * test/lisp/emacs-lisp/bytecomp-resources/warn-obsolete-variable-bound.el: New file.
* | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2021-01-021-3/+87
|\|
| * Update copyright year to 2021Paul Eggert2021-01-011-1/+1
| | | | | | | | Run "TZ=UTC0 admin/update-copyright".
| * Make byte-compiler warn about wide docstringsStefan Kangas2020-12-281-2/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile--wide-docstring-p): (byte-compile-docstring-length-warn): New defuns. (byte-compile-docstring-max-column): New defcustom. (byte-compile--wide-docstring-substitution-len): New variable. (byte-compile-warning-types, byte-compile-warnings): New value 'docstrings'. (byte-compile-file-form-autoload, byte-compile-file-form-defvar): (byte-compile-file-form-defvar-function, byte-compile-lambda): (byte-compile-defvar, byte-compile-file-form-defalias): Warn about too wide docstrings. (Bug#44858) * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-warn-wide-docstring/defconst) (bytecomp-warn-wide-docstring/defvar): New tests. (bytecomp--define-warning-file-test): New macro. (bytecomp/warn-wide-docstring-autoload\.el) (bytecomp/warn-wide-docstring-custom-declare-variable\.el) (bytecomp/warn-wide-docstring-defalias\.el) (bytecomp/warn-wide-docstring-defconst\.el) (bytecomp/warn-wide-docstring-define-abbrev-table\.el) (bytecomp/warn-wide-docstring-define-obsolete-function-alias\.el) (bytecomp/warn-wide-docstring-define-obsolete-variable-alias\.el) (bytecomp/warn-wide-docstring-defun\.el) (bytecomp/warn-wide-docstring-defvar\.el) (bytecomp/warn-wide-docstring-defvaralias\.el) (bytecomp/warn-wide-docstring-ignore-fill-column\.el) (bytecomp/warn-wide-docstring-ignore-override\.el) (bytecomp/warn-wide-docstring-ignore\.el) (bytecomp/warn-wide-docstring-multiline-first\.el) (bytecomp/warn-wide-docstring-multiline\.el): New tests. * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-autoload.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-custom-declare-variable.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-defalias.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-defconst.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-define-abbrev-table.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-define-obsolete-function-alias.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-define-obsolete-variable-alias.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-defun.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-defvar.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-defvaralias.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-ignore-fill-column.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-ignore-override.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-ignore.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-multiline-first.el: * test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-multiline.el: New files.
* | * Fix `byte-compile-file' for native compilation (bug#45442)Andrea Corallo2020-12-261-11/+12
| | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Fix logic for native compilation.
* | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-12-201-74/+96
|\|
| * Shorten some over-wide docstrings in functions and macrosStefan Kangas2020-12-191-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/allout-widgets.el (allout-widgets-tally-string): * lisp/array.el (array-mode): * lisp/calc/calc-units.el (calc-spn): * lisp/cedet/ede/generic.el (ede-generic-new-autoloader): * lisp/cedet/semantic/analyze.el (semantic-analyze-find-tag-sequence-default) (semantic-analyze-find-tag-sequence): * lisp/cedet/semantic/bovine/c.el (semantic-c-evaluate-symbol-for-hideif): * lisp/cedet/semantic/bovine/make.el (semantic-lex-make-command): * lisp/cedet/semantic/db-typecache.el (semanticdb-typecache-include-tags): * lisp/cedet/semantic/doc.el (semantic-documentation-for-tag): * lisp/cedet/semantic/tag-ls.el (semantic--tag-attribute-similar-p): * lisp/emacs-lisp/advice.el (ad-map-arglists): * lisp/emacs-lisp/bytecomp.el (byte-constant2) (byte-save-restriction, byte-catch-OBSOLETE, byte-unwind-protect): * lisp/emacs-lisp/cl-generic.el (cl-generic-combine-methods): * lisp/emacs-lisp/seq.el (seq-partition, seq-set-equal-p) (seq-filter): * lisp/faces.el (face-attribute-specified-or, face-equal): * lisp/info.el (Info-prev-reference-or-link) (Info-next-reference-or-link): * lisp/isearch.el (with-isearch-suspended): * lisp/kmacro.el (kmacro-step-edit-macro, kmacro-set-counter): * lisp/org/org-agenda.el (org-agenda-filter-by-category): * lisp/ses.el (ses-cell-symbol): * lisp/w32-fns.el (w32-shell-dos-semantics): Shorten doc strings to not exceed 80-column limits. (Bug#44858)
| * Ensure that byte compilation works for relative files (Bug#45287).Philipp Stephani2020-12-171-1/+5
| | | | | | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Don’t fail if target filename doesn’t contain a directory name. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--target-file-no-directory): New unit test.
| * Byte compilation: handle case where the output file is a mountpoint.Philipp Stephani2020-12-131-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | See Bug#44631. While testing for a readonly output directory has slightly different semantics, in practice they should cover cases where Emacs is sandboxed and can only write to the destination file, not its directory. * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Handle the case where the output directory is not writable. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--not-writable-directory) (bytecomp-tests--dest-mountpoint): New unit tests.
| * * lisp/emacs-lisp/bytecomp.el: Allow a nil destination fileStefan Monnier2020-12-121-58/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | (byte-compile--default-dest-file): New function, extracted from byte-compile-dest-file. (byte-compile-dest-file): Use it. (byte-compile-dest-file-function): Give it a non-nil default value. (byte-recompile-file, byte-compile-file): Handle a nil return value from `byte-compile-dest-file`. * lisp/progmodes/elisp-mode.el (elisp-flymake--batch-compile-for-flymake): Tell the compiler not to write the result, instead of writing it to a dummy temp file.
* | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-12-061-102/+30
|\|
| * Remove specific byte-compiler warnings for cl.elStefan Kangas2020-12-021-83/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-warning-types) (byte-compile-warnings, byte-compile-cl-file-p) (byte-compile-eval, byte-compile-eval-before-compile) (byte-compile-arglist-warn, byte-compile-find-cl-functions) (byte-compile-cl-warn, displaying-byte-compile-warnings) (byte-compile-file-form-require, byte-compile-form): Remove all specific cl.el warnings, as that library is now obsolete. The regular obsoletion warnings are sufficiently discouraging. * lisp/emacs-lisp/advice.el (ad-compile-function): Don't try to silence the now removed warning. * doc/lispref/tips.texi (Coding Conventions): * doc/misc/cl.texi (Organization): Make recommendation to not use cl.el and cl-compat.el stronger. * lisp/obsolete/cl.el: Make alias help say that they are obsolete. * lisp/obsolete/cl-compat.el (build-klist, safe-idiv) (pair-with-newsyms): Silence byte-compiler.
| * Fix byte-compiler warning for failed uses of lexical varsStefan Kangas2020-12-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-form): Fix byte-compiler warning for failed uses of lexical vars. (Bug#44980) * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp--define-warning-file-test): Don't prefix tests with 'warn'. (bytecomp/error-lexical-var-with-add-hook\.el) (bytecomp/error-lexical-var-with-remove-hook\.el) (bytecomp/error-lexical-var-with-run-hook-with-args-until-failure\.el) (bytecomp/error-lexical-var-with-run-hook-with-args-until-success\.el) (bytecomp/error-lexical-var-with-run-hook-with-args\.el) (bytecomp/error-lexical-var-with-symbol-value\.el): New tests. * test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-symbol-value.el: * test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-run-hook-with-args.el: * test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-run-hook-with-args-until-success.el: * test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-run-hook-with-args-until-failure.el: * test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-remove-hook.el: * test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-add-hook.el: New files.
| * Decrease code duplication in byte-compiler free-vars warningStefan Kangas2020-11-301-18/+23
| | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-free-vars-warn): New defun extracted from... (byte-compile-variable-ref, byte-compile-variable-set): ...here.
* | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-11-291-3/+8
|\|
| * Allow following symlinks when recompiling directoriesLars Ingebrigtsen2020-11-261-3/+8
| | | | | | | | | | | | * doc/lispref/compile.texi (Compilation Functions): Document it. * lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Allow following symlinks (bug#10292).
* | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-11-221-1/+2
|\|
| * Don't optimize away `eval` when its lexical context is differentStefan Monnier2020-11-201-1/+2
| | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-file-form-eval): Obey lexical-binding.
* | ; Fix trivial typosStefan Kangas2020-11-201-1/+1
| |
* | Allow for native compilation qualities to be specified per input fileAndrea Corallo2020-11-071-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-native-qualities): Define variable. (byte-compile-from-buffer): Spill compilation qualities. * lisp/emacs-lisp/comp.el (comp-speed, comp-debug): Make them file local variables. (comp-ctxt): Add `speed' and `debug' slots. (comp-spill-speed, comp-spill-lap-function): Make use of these. (comp-spill-lap-function): Spill qualities from `byte-native-qualities'. (comp-limplify-top-level): Do not use `comp-speed' but ctxt value unstead. (comp-final): Do not propagate qualities as they are already in the `comp-ctxt'. (comp--native-compile): Close on `byte-native-qualities'. * src/comp.c (comp_t): Add 'speed' and 'debug' fields. (emit_comment, emit_mvar_rval, emit_static_object) (emit_ctxt_code, Fcomp__init_ctxt): Use these instead of the global variables. (Fcomp__compile_ctxt_to_file): Set comp.speed and comp.debug and use them.
* | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-10-311-2/+1
|\|
| * Don't leak result of nested byte-compilation to outer levelPaul Pogonyshev2020-10-271-2/+1
| | | | | | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Bind `byte-compiler-error-flag' instead of setting it (bug#41065). This fixes a problem of "leaking" the flag when compiling something that then compiles something that errors out (i.e., an "inner" compile).