mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-10 08:10:21 -08:00
Use #$ for lambda fixups in native compilation data vectors
The "#$" syntax is recognized by Fread, which substitutes Vload_file_name in its place. If Vload_file_name is bound appropriately, no other value can produce an object EQ to the one produced by "#$". We use this to check the data vector for entries that we know should have been initialized: if the value is still equal to what we bound Vload_file_name to when it was read, it wasn't initialized, and we abort. * lisp/emacs-lisp/comp.el (comp--#$): New defvar. (comp--finalize-container): Use it. * src/comp.c (ABI_VERSION): Bump. (emit_static_object): Ensure 'comp--#$' prints as "#$". (load_static_obj): Ensure '#$' reads as Vcomp__hashdollar. (check_comp_unit_relocs): Adjust assertion. (syms_of_comp): Define 'comp--#$'. * src/pdumper.c (dump_do_dump_relocation): Adjust assertion.
This commit is contained in:
parent
20e3959dc3
commit
4eabfd68c9
3 changed files with 26 additions and 10 deletions
|
|
@ -42,6 +42,7 @@
|
|||
(defvar comp-subr-arities-h)
|
||||
(defvar native-comp-eln-load-path)
|
||||
(defvar native-comp-enable-subr-trampolines)
|
||||
(defvar comp--\#$)
|
||||
|
||||
(declare-function comp--compile-ctxt-to-file0 "comp.c")
|
||||
(declare-function comp--init-ctxt "comp.c")
|
||||
|
|
@ -3254,10 +3255,9 @@ Set it into the `type' slot."
|
|||
;; from the corresponding m-var.
|
||||
collect (if (gethash obj
|
||||
(comp-ctxt-byte-func-to-func-h comp-ctxt))
|
||||
;; Hack not to have `--lambda-fixup' in
|
||||
;; data relocations as it would trigger the
|
||||
;; check in 'check_comp_unit_relocs'.
|
||||
(intern (concat (make-string 1 ?-) "-lambda-fixup"))
|
||||
;; This prints as #$, so we can assert this
|
||||
;; value does not remain in the data vector
|
||||
comp--\#$
|
||||
obj))))
|
||||
|
||||
(defun comp--finalize-relocs ()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue