[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
scratch/comp-static-data 4a0854c9e32 03/16: src/alloc.c: Unmark Lisp Vec
From: |
Vibhav Pant |
Subject: |
scratch/comp-static-data 4a0854c9e32 03/16: src/alloc.c: Unmark Lisp Vectors when accessing the size field. |
Date: |
Thu, 19 Jan 2023 12:44:32 -0500 (EST) |
branch: scratch/comp-static-data
commit 4a0854c9e327453835c35453b8708b5f4129270f
Author: Vibhav Pant <vibhavp@gmail.com>
Commit: Vibhav Pant <vibhavp@gmail.com>
src/alloc.c: Unmark Lisp Vectors when accessing the size field.
* src/alloc.c (Fmake_closure, visit_vectorlike_root)
[HAVE_STATIC_LISP_GLOBALS]: When compiled with support for statically
native compiled Lisp literals, unset the mark bit in the Lisp_Vector
struct's 'size' field, to avoid using an invalid value as the length
if the vector is statically generated during native compilation.
---
src/alloc.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/alloc.c b/src/alloc.c
index fb6e9dafb3d..12642a02c9d 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3791,6 +3791,11 @@ usage: (make-closure PROTOTYPE &rest CLOSURE-VARS) */)
ptrdiff_t protosize = PVSIZE (protofun);
struct Lisp_Vector *v = allocate_vectorlike (protosize, false);
v->header = XVECTOR (protofun)->header;
+#if HAVE_STATIC_LISP_GLOBALS
+ /* We might be copying from a vector statically allocated during
+ native compilation, be sure to unset the mark flag. */
+ v->header.size &= ~ARRAY_MARK_FLAG;
+#endif
memcpy (v->contents, XVECTOR (protofun)->contents, protosize * word_size);
v->contents[COMPILED_CONSTANTS] = constvec;
return make_lisp_ptr (v, Lisp_Vectorlike);
@@ -6249,6 +6254,9 @@ visit_vectorlike_root (struct gc_root_visitor visitor,
if (size & PSEUDOVECTOR_FLAG)
size &= PSEUDOVECTOR_SIZE_MASK;
+#if HAVE_STATIC_LISP_GLOBALS
+ size &= ~ARRAY_MARK_FLAG;
+#endif
for (i = 0; i < size; i++)
visitor.visit (&ptr->contents[i], type, visitor.data);
}
- scratch/comp-static-data updated (e7459fcbde4 -> b67b328d6ab), Vibhav Pant, 2023/01/19
- scratch/comp-static-data 0246e122df8 04/16: Avoid accessing Lisp_Vector's size field directly., Vibhav Pant, 2023/01/19
- scratch/comp-static-data 80ea23618da 06/16: Avoid directly accessing the size field in a Lisp String., Vibhav Pant, 2023/01/19
- scratch/comp-static-data 7727f85b869 07/16: src/.gdbinit: Add pretty-printing support for native comp units., Vibhav Pant, 2023/01/19
- scratch/comp-static-data 83c49e2f376 01/16: Avoid additional recursion while marking natively compiled unit., Vibhav Pant, 2023/01/19
- scratch/comp-static-data ab886f48966 05/16: comp.c: Only call comp_init_objs when not recursively loading., Vibhav Pant, 2023/01/19
- scratch/comp-static-data 4a0854c9e32 03/16: src/alloc.c: Unmark Lisp Vectors when accessing the size field.,
Vibhav Pant <=
- scratch/comp-static-data a0bd3b7d32a 02/16: src/alloc.c: Remove unnecessary calls to static_comp_object_p., Vibhav Pant, 2023/01/19
- scratch/comp-static-data 6bf897449b6 09/16: src/comp.c: Disable native compiling certain bytecode forms for now., Vibhav Pant, 2023/01/19
- scratch/comp-static-data fb3a68c171e 12/16: ; src/comp.c: Fix typo in call to comp-func-byte-func., Vibhav Pant, 2023/01/19
- scratch/comp-static-data 99896f21267 10/16: Merge branch 'master' into scratch/comp-static-data, Vibhav Pant, 2023/01/19
- scratch/comp-static-data 87909765da7 13/16: comp.el: Avoid unnecessary allocation of byte-code forms., Vibhav Pant, 2023/01/19
- scratch/comp-static-data 485f868bbfe 14/16: src/alloc.c: Improve checks in static_comp_object_p., Vibhav Pant, 2023/01/19
- scratch/comp-static-data b67b328d6ab 16/16: Pin native comp units with static objects for now., Vibhav Pant, 2023/01/19
- scratch/comp-static-data 2cc0d51f29d 11/16: src/comp.c: Address several GC-related issues with static literals., Vibhav Pant, 2023/01/19
- scratch/comp-static-data 94120d328e8 08/16: Merge branch 'master' into scratch/comp-static-data, Vibhav Pant, 2023/01/19
- scratch/comp-static-data 9c6acb9681e 15/16: pdumper.c (dump_object): Assert the object is not statically emitted, Vibhav Pant, 2023/01/19