aboutsummaryrefslogtreecommitdiffstats
path: root/src/comp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp.c')
-rw-r--r--src/comp.c68
1 files changed, 10 insertions, 58 deletions
diff --git a/src/comp.c b/src/comp.c
index 0c78e60fc43..0eec2e5db01 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -31,7 +31,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
31#include <libgccjit.h> 31#include <libgccjit.h>
32#include <epaths.h> 32#include <epaths.h>
33 33
34#include "puresize.h"
35#include "window.h" 34#include "window.h"
36#include "dynlib.h" 35#include "dynlib.h"
37#include "buffer.h" 36#include "buffer.h"
@@ -676,7 +675,6 @@ helper_GET_SYMBOL_WITH_POSITION (Lisp_Object);
676static void *helper_link_table[] = 675static void *helper_link_table[] =
677 { wrong_type_argument, 676 { wrong_type_argument,
678 helper_PSEUDOVECTOR_TYPEP_XUNTAG, 677 helper_PSEUDOVECTOR_TYPEP_XUNTAG,
679 pure_write_error,
680 push_handler, 678 push_handler,
681 record_unwind_protect_excursion, 679 record_unwind_protect_excursion,
682 helper_unbind_n, 680 helper_unbind_n,
@@ -3946,52 +3944,6 @@ static void define_SYMBOL_WITH_POS_SYM (void)
3946} 3944}
3947 3945
3948static void 3946static void
3949define_CHECK_IMPURE (void)
3950{
3951 gcc_jit_param *param[] =
3952 { gcc_jit_context_new_param (comp.ctxt,
3953 NULL,
3954 comp.lisp_obj_type,
3955 "obj"),
3956 gcc_jit_context_new_param (comp.ctxt,
3957 NULL,
3958 comp.void_ptr_type,
3959 "ptr") };
3960 comp.check_impure =
3961 gcc_jit_context_new_function (comp.ctxt, NULL,
3962 GCC_JIT_FUNCTION_INTERNAL,
3963 comp.void_type,
3964 "CHECK_IMPURE",
3965 2,
3966 param,
3967 0);
3968
3969 DECL_BLOCK (entry_block, comp.check_impure);
3970 DECL_BLOCK (err_block, comp.check_impure);
3971 DECL_BLOCK (ok_block, comp.check_impure);
3972
3973 comp.block = entry_block;
3974 comp.func = comp.check_impure;
3975
3976 emit_cond_jump (emit_PURE_P (gcc_jit_param_as_rvalue (param[0])), /* FIXME */
3977 err_block,
3978 ok_block);
3979 gcc_jit_block_end_with_void_return (ok_block, NULL);
3980
3981 gcc_jit_rvalue *pure_write_error_arg =
3982 gcc_jit_param_as_rvalue (param[0]);
3983
3984 comp.block = err_block;
3985 gcc_jit_block_add_eval (comp.block,
3986 NULL,
3987 emit_call (intern_c_string ("pure_write_error"),
3988 comp.void_type, 1,&pure_write_error_arg,
3989 false));
3990
3991 gcc_jit_block_end_with_void_return (err_block, NULL);
3992}
3993
3994static void
3995define_maybe_gc_or_quit (void) 3947define_maybe_gc_or_quit (void)
3996{ 3948{
3997 3949
@@ -5114,10 +5066,10 @@ maybe_defer_native_compilation (Lisp_Object function_name,
5114 5066
5115 Lisp_Object src = 5067 Lisp_Object src =
5116 concat2 (CALL1I (file-name-sans-extension, Vload_true_file_name), 5068 concat2 (CALL1I (file-name-sans-extension, Vload_true_file_name),
5117 build_pure_c_string (".el")); 5069 build_string (".el"));
5118 if (NILP (Ffile_exists_p (src))) 5070 if (NILP (Ffile_exists_p (src)))
5119 { 5071 {
5120 src = concat2 (src, build_pure_c_string (".gz")); 5072 src = concat2 (src, build_string (".gz"));
5121 if (NILP (Ffile_exists_p (src))) 5073 if (NILP (Ffile_exists_p (src)))
5122 return; 5074 return;
5123 } 5075 }
@@ -5690,40 +5642,40 @@ compiled one. */);
5690 Fput (Qnative_compiler_error, Qerror_conditions, 5642 Fput (Qnative_compiler_error, Qerror_conditions,
5691 pure_list (Qnative_compiler_error, Qerror)); 5643 pure_list (Qnative_compiler_error, Qerror));
5692 Fput (Qnative_compiler_error, Qerror_message, 5644 Fput (Qnative_compiler_error, Qerror_message,
5693 build_pure_c_string ("Native compiler error")); 5645 build_string ("Native compiler error"));
5694 5646
5695 DEFSYM (Qnative_ice, "native-ice"); 5647 DEFSYM (Qnative_ice, "native-ice");
5696 Fput (Qnative_ice, Qerror_conditions, 5648 Fput (Qnative_ice, Qerror_conditions,
5697 pure_list (Qnative_ice, Qnative_compiler_error, Qerror)); 5649 pure_list (Qnative_ice, Qnative_compiler_error, Qerror));
5698 Fput (Qnative_ice, Qerror_message, 5650 Fput (Qnative_ice, Qerror_message,
5699 build_pure_c_string ("Internal native compiler error")); 5651 build_string ("Internal native compiler error"));
5700 5652
5701 /* By the load machinery. */ 5653 /* By the load machinery. */
5702 DEFSYM (Qnative_lisp_load_failed, "native-lisp-load-failed"); 5654 DEFSYM (Qnative_lisp_load_failed, "native-lisp-load-failed");
5703 Fput (Qnative_lisp_load_failed, Qerror_conditions, 5655 Fput (Qnative_lisp_load_failed, Qerror_conditions,
5704 pure_list (Qnative_lisp_load_failed, Qerror)); 5656 pure_list (Qnative_lisp_load_failed, Qerror));
5705 Fput (Qnative_lisp_load_failed, Qerror_message, 5657 Fput (Qnative_lisp_load_failed, Qerror_message,
5706 build_pure_c_string ("Native elisp load failed")); 5658 build_string ("Native elisp load failed"));
5707 5659
5708 DEFSYM (Qnative_lisp_wrong_reloc, "native-lisp-wrong-reloc"); 5660 DEFSYM (Qnative_lisp_wrong_reloc, "native-lisp-wrong-reloc");
5709 Fput (Qnative_lisp_wrong_reloc, Qerror_conditions, 5661 Fput (Qnative_lisp_wrong_reloc, Qerror_conditions,
5710 pure_list (Qnative_lisp_wrong_reloc, Qnative_lisp_load_failed, Qerror)); 5662 pure_list (Qnative_lisp_wrong_reloc, Qnative_lisp_load_failed, Qerror));
5711 Fput (Qnative_lisp_wrong_reloc, Qerror_message, 5663 Fput (Qnative_lisp_wrong_reloc, Qerror_message,
5712 build_pure_c_string ("Primitive redefined or wrong relocation")); 5664 build_string ("Primitive redefined or wrong relocation"));
5713 5665
5714 DEFSYM (Qwrong_register_subr_call, "wrong-register-subr-call"); 5666 DEFSYM (Qwrong_register_subr_call, "wrong-register-subr-call");
5715 Fput (Qwrong_register_subr_call, Qerror_conditions, 5667 Fput (Qwrong_register_subr_call, Qerror_conditions,
5716 pure_list (Qwrong_register_subr_call, Qnative_lisp_load_failed, Qerror)); 5668 pure_list (Qwrong_register_subr_call, Qnative_lisp_load_failed, Qerror));
5717 Fput (Qwrong_register_subr_call, Qerror_message, 5669 Fput (Qwrong_register_subr_call, Qerror_message,
5718 build_pure_c_string ("comp--register-subr can only be called during " 5670 build_string ("comp--register-subr can only be called during "
5719 "native lisp load phase.")); 5671 "native lisp load phase."));
5720 5672
5721 DEFSYM (Qnative_lisp_file_inconsistent, "native-lisp-file-inconsistent"); 5673 DEFSYM (Qnative_lisp_file_inconsistent, "native-lisp-file-inconsistent");
5722 Fput (Qnative_lisp_file_inconsistent, Qerror_conditions, 5674 Fput (Qnative_lisp_file_inconsistent, Qerror_conditions,
5723 pure_list (Qnative_lisp_file_inconsistent, Qnative_lisp_load_failed, Qerror)); 5675 pure_list (Qnative_lisp_file_inconsistent, Qnative_lisp_load_failed, Qerror));
5724 Fput (Qnative_lisp_file_inconsistent, Qerror_message, 5676 Fput (Qnative_lisp_file_inconsistent, Qerror_message,
5725 build_pure_c_string ("eln file inconsistent with current runtime " 5677 build_string ("eln file inconsistent with current runtime "
5726 "configuration, please recompile")); 5678 "configuration, please recompile"));
5727 5679
5728 defsubr (&Scomp__subr_signature); 5680 defsubr (&Scomp__subr_signature);
5729 defsubr (&Scomp_el_to_eln_rel_filename); 5681 defsubr (&Scomp_el_to_eln_rel_filename);