summaryrefslogtreecommitdiff
path: root/src/lisp.h
diff options
context:
space:
mode:
authorStefan Kangas <stefankangas@gmail.com>2025-02-01 04:56:52 +0100
committerStefan Kangas <stefankangas@gmail.com>2025-02-01 04:56:52 +0100
commitbf97946d7dc460b7d3c3ce03193041b891b51faf (patch)
treec799f87903ca3dcba8b804bd185b519aacc0a636 /src/lisp.h
parenta4a0957b6b3b1db858524ac6d4dc3d951f65960b (diff)
parentaa07e94439c663f768c32a689d14506d25a7a5bc (diff)
downloademacs-bf97946d7dc460b7d3c3ce03193041b891b51faf.tar.gz
emacs-bf97946d7dc460b7d3c3ce03193041b891b51faf.tar.bz2
emacs-bf97946d7dc460b7d3c3ce03193041b891b51faf.zip
Merge branch 'scratch/no-purespace' into 'master'
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h135
1 files changed, 11 insertions, 124 deletions
diff --git a/src/lisp.h b/src/lisp.h
index 2faad895133..5595038f7c7 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -639,20 +639,12 @@ extern struct gflags
dump. */
bool dumped_with_pdumper_ : 1;
#endif
-#ifdef HAVE_UNEXEC
- bool will_dump_with_unexec_ : 1;
- /* Set in an Emacs process that has been restored from an unexec
- dump. */
- bool dumped_with_unexec_ : 1;
- /* We promise not to unexec: useful for hybrid malloc. */
- bool will_not_unexec_ : 1;
-#endif
} gflags;
INLINE bool
will_dump_p (void)
{
-#if HAVE_PDUMPER || defined HAVE_UNEXEC
+#if HAVE_PDUMPER
return gflags.will_dump_;
#else
return false;
@@ -662,7 +654,7 @@ will_dump_p (void)
INLINE bool
will_bootstrap_p (void)
{
-#if HAVE_PDUMPER || defined HAVE_UNEXEC
+#if HAVE_PDUMPER
return gflags.will_bootstrap_;
#else
return false;
@@ -689,39 +681,6 @@ dumped_with_pdumper_p (void)
#endif
}
-INLINE bool
-will_dump_with_unexec_p (void)
-{
-#ifdef HAVE_UNEXEC
- return gflags.will_dump_with_unexec_;
-#else
- return false;
-#endif
-}
-
-INLINE bool
-dumped_with_unexec_p (void)
-{
-#ifdef HAVE_UNEXEC
- return gflags.dumped_with_unexec_;
-#else
- return false;
-#endif
-}
-
-/* This function is the opposite of will_dump_with_unexec_p(), except
- that it returns false before main runs. It's important to use
- gmalloc for any pre-main allocations if we're going to unexec. */
-INLINE bool
-definitely_will_not_unexec_p (void)
-{
-#ifdef HAVE_UNEXEC
- return gflags.will_not_unexec_;
-#else
- return true;
-#endif
-}
-
/* Defined in floatfns.c. */
extern double extract_float (Lisp_Object);
@@ -837,9 +796,6 @@ struct Lisp_Symbol
special (with `defvar' etc), and shouldn't be lexically bound. */
bool_bf declared_special : 1;
- /* True if pointed to from purespace and hence can't be GC'd. */
- bool_bf pinned : 1;
-
/* The symbol's name, as a Lisp string. */
Lisp_Object name;
@@ -2666,13 +2622,9 @@ struct Lisp_Hash_Table
/* Hash table test (only used when frozen in dump) */
ENUM_BF (hash_table_std_test_t) frozen_test : 2;
- /* True if the table can be purecopied. The table cannot be
- changed afterwards. */
- bool_bf purecopy : 1;
-
/* True if the table is mutable. Ordinarily tables are mutable, but
- pure tables are not, and while a table is being mutated it is
- immutable for recursive attempts to mutate it. */
+ some tables are not: while a table is being mutated it is immutable
+ for recursive attempts to mutate it. */
bool_bf mutable : 1;
/* Next weak hash table if this is a weak hash table. The head of
@@ -3445,14 +3397,10 @@ CHECK_SUBR (Lisp_Object x)
/* If we're not dumping using the legacy dumper and we might be using
the portable dumper, try to bunch all the subr structures together
for more efficient dump loading. */
-#ifndef HAVE_UNEXEC
-# ifdef DARWIN_OS
-# define SUBR_SECTION_ATTRIBUTE ATTRIBUTE_SECTION ("__DATA,subrs")
-# else
-# define SUBR_SECTION_ATTRIBUTE ATTRIBUTE_SECTION (".subrs")
-# endif
+#ifdef DARWIN_OS
+# define SUBR_SECTION_ATTRIBUTE ATTRIBUTE_SECTION ("__DATA,subrs")
#else
-# define SUBR_SECTION_ATTRIBUTE
+# define SUBR_SECTION_ATTRIBUTE ATTRIBUTE_SECTION (".subrs")
#endif
/* Define a built-in function for calling from Lisp.
@@ -4299,7 +4247,7 @@ extern char *extract_data_from_object (Lisp_Object, ptrdiff_t *, ptrdiff_t *);
EMACS_UINT hash_string (char const *, ptrdiff_t);
EMACS_UINT sxhash (Lisp_Object);
Lisp_Object make_hash_table (const struct hash_table_test *, EMACS_INT,
- hash_table_weakness_t, bool);
+ hash_table_weakness_t);
Lisp_Object hash_table_weakness_symbol (hash_table_weakness_t weak);
ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object);
ptrdiff_t hash_lookup_get_hash (struct Lisp_Hash_Table *h, Lisp_Object key,
@@ -4474,8 +4422,6 @@ extern void parse_str_as_multibyte (const unsigned char *, ptrdiff_t,
/* Defined in alloc.c. */
extern intptr_t garbage_collection_inhibited;
-extern void *my_heap_start (void);
-extern void check_pure_size (void);
unsigned char *resize_string_data (Lisp_Object, ptrdiff_t, int, int);
extern void malloc_warning (const char *);
extern AVOID memory_full (size_t);
@@ -4483,11 +4429,9 @@ extern AVOID buffer_memory_full (ptrdiff_t);
extern bool survives_gc_p (Lisp_Object);
extern void mark_object (Lisp_Object);
extern void mark_objects (Lisp_Object *, ptrdiff_t);
-#if defined REL_ALLOC && !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
+#if defined REL_ALLOC && !defined SYSTEM_MALLOC
extern void refill_memory_reserve (void);
#endif
-extern void alloc_unexec_pre (void);
-extern void alloc_unexec_post (void);
extern void mark_c_stack (char const *, char const *);
extern void flush_stack_call_func1 (void (*func) (void *arg), void *arg);
extern void mark_memory (void const *start, void const *end);
@@ -4540,11 +4484,8 @@ extern Lisp_Object list4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
extern Lisp_Object list5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object);
extern Lisp_Object listn (ptrdiff_t, Lisp_Object, ...);
-extern Lisp_Object pure_listn (ptrdiff_t, Lisp_Object, ...);
#define list(...) \
listn (ARRAYELTS (((Lisp_Object []) {__VA_ARGS__})), __VA_ARGS__)
-#define pure_list(...) \
- pure_listn (ARRAYELTS (((Lisp_Object []) {__VA_ARGS__})), __VA_ARGS__)
enum gc_root_type
{
@@ -4618,18 +4559,8 @@ extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT);
extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, ptrdiff_t);
extern Lisp_Object make_specified_string (const char *,
ptrdiff_t, ptrdiff_t, bool);
-extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, bool);
-extern Lisp_Object make_pure_c_string (const char *, ptrdiff_t);
extern void pin_string (Lisp_Object string);
-/* Make a string allocated in pure space, use STR as string data. */
-
-INLINE Lisp_Object
-build_pure_c_string (const char *str)
-{
- return make_pure_c_string (str, strlen (str));
-}
-
/* Make a string from the data at STR, treating it as multibyte if the
data warrants. */
@@ -4639,7 +4570,6 @@ build_string (const char *str)
return make_string (str, strlen (str));
}
-extern Lisp_Object pure_cons (Lisp_Object, Lisp_Object);
extern Lisp_Object make_vector (ptrdiff_t, Lisp_Object);
extern struct Lisp_Vector *allocate_nil_vector (ptrdiff_t)
ATTRIBUTE_RETURNS_NONNULL;
@@ -4728,7 +4658,7 @@ void *hash_table_alloc_bytes (ptrdiff_t nbytes) ATTRIBUTE_MALLOC_SIZE ((1));
void hash_table_free_bytes (void *p, ptrdiff_t nbytes);
/* Defined in gmalloc.c. */
-#if !defined DOUG_LEA_MALLOC && !defined HYBRID_MALLOC && !defined SYSTEM_MALLOC
+#if !defined DOUG_LEA_MALLOC && !defined SYSTEM_MALLOC
extern size_t __malloc_extra_blocks;
#endif
#if !HAVE_DECL_ALIGNED_ALLOC
@@ -4931,49 +4861,6 @@ void do_debug_on_call (Lisp_Object code, specpdl_ref count);
Lisp_Object funcall_general (Lisp_Object fun,
ptrdiff_t numargs, Lisp_Object *args);
-/* Defined in unexmacosx.c. */
-#if defined DARWIN_OS && defined HAVE_UNEXEC
-/* Redirect calls to malloc, realloc and free to a macOS zone memory allocator.
- FIXME: Either also redirect unexec_aligned_alloc and unexec_calloc,
- or fix this comment to explain why those two redirections are not needed. */
-extern void unexec_init_emacs_zone (void);
-extern void *unexec_malloc (size_t);
-extern void *unexec_realloc (void *, size_t);
-extern void unexec_free (void *);
-# ifndef UNEXMACOSX_C
-# include <stdlib.h>
-# undef malloc
-# undef realloc
-# undef free
-# define malloc unexec_malloc
-# define realloc unexec_realloc
-# define free unexec_free
-# endif
-#endif
-
-/* Defined in gmalloc.c. */
-#ifdef HYBRID_MALLOC
-/* Redirect calls to malloc and friends to a hybrid allocator that
- uses gmalloc before dumping and the system malloc after dumping.
- This can be useful on Cygwin, for example. */
-extern void *hybrid_aligned_alloc (size_t, size_t);
-extern void *hybrid_calloc (size_t, size_t);
-extern void *hybrid_malloc (size_t);
-extern void *hybrid_realloc (void *, size_t);
-extern void hybrid_free (void *);
-# include <stdlib.h>
-# undef aligned_alloc
-# undef calloc
-# undef malloc
-# undef realloc
-# undef free
-# define aligned_alloc hybrid_aligned_alloc
-# define calloc hybrid_calloc
-# define malloc hybrid_malloc
-# define realloc hybrid_realloc
-# define free hybrid_free
-#endif
-
/* The definition of Lisp_Module_Function depends on emacs-module.h,
so we don't define it here. It's defined in emacs-module.c. */
@@ -5614,7 +5501,7 @@ INLINE struct Lisp_Native_Comp_Unit *
allocate_native_comp_unit (void)
{
return ALLOCATE_ZEROED_PSEUDOVECTOR (struct Lisp_Native_Comp_Unit,
- data_impure_vec, PVEC_NATIVE_COMP_UNIT);
+ data_vec, PVEC_NATIVE_COMP_UNIT);
}
#else
INLINE bool