This source file includes following definitions.
- NATIVE_COMP_UNITP
- XNATIVE_COMP_UNIT
- maybe_defer_native_compilation
- unload_comp_unit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #ifndef COMP_H
21 #define COMP_H
22
23 #include <dynlib.h>
24
25 struct Lisp_Native_Comp_Unit
26 {
27 union vectorlike_header header;
28
29
30
31
32
33 Lisp_Object file;
34 Lisp_Object optimize_qualities;
35
36
37 Lisp_Object lambda_gc_guard_h;
38
39 Lisp_Object lambda_c_name_idx_h;
40
41 Lisp_Object data_fdoc_v;
42
43 Lisp_Object data_vec;
44
45
46 Lisp_Object data_impure_vec;
47
48 Lisp_Object *data_imp_relocs;
49 bool loaded_once;
50 bool load_ongoing;
51 dynlib_handle_ptr handle;
52 } GCALIGNED_STRUCT;
53
54 #ifdef HAVE_NATIVE_COMP
55
56 INLINE_HEADER_BEGIN
57
58 INLINE bool
59 NATIVE_COMP_UNITP (Lisp_Object a)
60 {
61 return PSEUDOVECTORP (a, PVEC_NATIVE_COMP_UNIT);
62 }
63
64 INLINE struct Lisp_Native_Comp_Unit *
65 XNATIVE_COMP_UNIT (Lisp_Object a)
66 {
67 eassert (NATIVE_COMP_UNITP (a));
68 return XUNTAG (a, Lisp_Vectorlike, struct Lisp_Native_Comp_Unit);
69 }
70
71
72
73 extern void hash_native_abi (void);
74
75 extern Lisp_Object load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u,
76 bool loading_dump, bool late_load);
77
78 extern void unload_comp_unit (struct Lisp_Native_Comp_Unit *);
79
80 extern Lisp_Object native_function_doc (Lisp_Object function);
81
82 extern void syms_of_comp (void);
83
84 extern void maybe_defer_native_compilation (Lisp_Object function_name,
85 Lisp_Object definition);
86
87 extern void eln_load_path_final_clean_up (void);
88
89 extern void fixup_eln_load_path (Lisp_Object directory);
90
91 #else
92
93 static inline void
94 maybe_defer_native_compilation (Lisp_Object function_name,
95 Lisp_Object definition)
96 {}
97
98 static inline
99 void unload_comp_unit (struct Lisp_Native_Comp_Unit *cu)
100 {}
101
102 extern void syms_of_comp (void);
103
104 INLINE_HEADER_END
105
106 #endif
107
108 #endif