aboutsummaryrefslogtreecommitdiffstats
path: root/src/comp.c
diff options
context:
space:
mode:
authorAndrea Corallo2019-07-14 17:21:34 +0200
committerAndrea Corallo2020-01-01 11:33:53 +0100
commit988a5133dc86e28e4b097d2c8d64d25e37bb6c5d (patch)
treeb3654efa574d7dd0e22245c488e970330bf785a5 /src/comp.c
parent1deb54f5c9c0b4f3c594e4f4aa76b42a67643976 (diff)
downloademacs-988a5133dc86e28e4b097d2c8d64d25e37bb6c5d.tar.gz
emacs-988a5133dc86e28e4b097d2c8d64d25e37bb6c5d.zip
block to hash
Diffstat (limited to 'src/comp.c')
-rw-r--r--src/comp.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/comp.c b/src/comp.c
index e407c079b63..c97fe404cad 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -212,7 +212,7 @@ retrive_block (Lisp_Object symbol)
212} 212}
213 213
214static void 214static void
215declare_block (char *block_name) 215declare_block (const char * block_name)
216{ 216{
217 gcc_jit_block *block = gcc_jit_function_new_block (comp.func, block_name); 217 gcc_jit_block *block = gcc_jit_function_new_block (comp.func, block_name);
218 Lisp_Object key = make_string (block_name, strlen (block_name)); 218 Lisp_Object key = make_string (block_name, strlen (block_name));
@@ -1977,7 +1977,7 @@ DEFUN ("comp-add-func-to-ctxt", Fcomp_add_func_to_ctxt, Scomp_add_func_to_ctxt,
1977 Lisp_Object args = FUNCALL1 (comp-func-args, func); 1977 Lisp_Object args = FUNCALL1 (comp-func-args, func);
1978 EMACS_INT frame_size = XFIXNUM (FUNCALL1 (comp-func-frame-size, func)); 1978 EMACS_INT frame_size = XFIXNUM (FUNCALL1 (comp-func-frame-size, func));
1979 EMACS_INT min_args = XFIXNUM (FUNCALL1 (comp-args-min, args)); 1979 EMACS_INT min_args = XFIXNUM (FUNCALL1 (comp-args-min, args));
1980 EMACS_INT max_args = XFIXNUM (FUNCALL1 (comp-args-max, args)); 1980 /* EMACS_INT max_args = XFIXNUM (FUNCALL1 (comp-args-max, args)); */
1981 bool ncall = !NILP (FUNCALL1 (comp-args-ncall-conv, args)); 1981 bool ncall = !NILP (FUNCALL1 (comp-args-ncall-conv, args));
1982 1982
1983 if (!ncall) 1983 if (!ncall)
@@ -2015,8 +2015,19 @@ DEFUN ("comp-add-func-to-ctxt", Fcomp_add_func_to_ctxt, Scomp_add_func_to_ctxt,
2015 2015
2016 comp.func_blocks = CALLN (Fmake_hash_table, QCtest, Qequal, QCweakness, Qt); 2016 comp.func_blocks = CALLN (Fmake_hash_table, QCtest, Qequal, QCweakness, Qt);
2017 2017
2018 /* Pre declare all basic blocks. */ 2018 /* Pre declare all basic blocks to gcc.
2019 The "entry" block must be declared as first. */
2020 declare_block ("entry");
2019 Lisp_Object blocks = FUNCALL1 (comp-func-blocks, func); 2021 Lisp_Object blocks = FUNCALL1 (comp-func-blocks, func);
2022 Lisp_Object entry_block = Fgethash (intern ("entry"), blocks, Qnil);
2023 struct Lisp_Hash_Table *ht = XHASH_TABLE (blocks);
2024 for (ptrdiff_t i = 0; i < ht->count; i++)
2025 {
2026 Lisp_Object block = HASH_VALUE (ht, i);
2027 if (!EQ (block, entry_block))
2028 declare_block ((char *) SDATA (SYMBOL_NAME (HASH_KEY (ht, i))));
2029 }
2030
2020 while (CONSP (blocks)) 2031 while (CONSP (blocks))
2021 { 2032 {
2022 char *block_name = (char *) SDATA (SYMBOL_NAME (XCAR (blocks))); 2033 char *block_name = (char *) SDATA (SYMBOL_NAME (XCAR (blocks)));