Remove calls to intern with a static string from code that runs on X

* Makefile.in (actual-all): Reword build failure advice.

* src/bytecode.c (exec_byte_code, syms_of_bytecode):
* src/font.c (syms_of_font):
* src/hbfont.c (uni_combining):
* src/xfns.c (Fx_display_backing_store, Fx_display_visual_class)
(x_create_tip_frame, Fx_show_tip, syms_of_xfns):
* src/xfont.c (xfont_supported_scripts, xfont_driver)
(syms_of_xfont):
* src/xsmfns.c (Fhandle_save_session, syms_of_xsmfns): Remove
calls to intern with a static string.
This commit is contained in:
Po Lu 2022-09-19 10:01:52 +08:00
parent 202c416e2e
commit 5b3c4004a9
7 changed files with 73 additions and 44 deletions

View file

@ -380,26 +380,26 @@ bootstrap-all:
actual-all: ${SUBDIR} info $(gsettings_SCHEMAS:.xml=.valid) src-depending-on-lisp
# ADVICE-ON-FAILURE-BEGIN:all
# You might try to:
# - run "make bootstrap", which might fix the problem
# - run "make V=1", which displays the full commands invoked by make,
#   to further investigate the problem
# It can help to run "make bootstrap", which can resolve many build
# failures caused by incrementally building from a previously built
# checkout.
# Failing that, running "make V=1" will cause Make to display the full
# commands it invokes to build Emacs, which helps to investigate the
# problem.
# ADVICE-ON-FAILURE-END:all
# ADVICE-ON-FAILURE-BEGIN:bootstrap
# You might try to:
# - run "git clean -fdx" and run "make bootstrap" again, which might
#   fix the problem
#   !BEWARE! "git clean -fdx" deletes all files that are not under
#   !BEWARE! version control, which means that all changes to such
#   !BEWARE! files will be lost and cannot be restored later
# - run "make V=1", which displays the full commands invoked by make,
#   to further investigate the problem
# If "make bootstrap" failed, try running "make extraclean" and then
# "make bootstrap" again. If that still fails and you are building
# Emacs from a repository checkout, run "git clean -fdx" and retry
# "make bootstrap". Otherwise, please report a bug by sending email
# to bug-gnu-emacs@gnu.org.
# ADVICE-ON-FAILURE-END:bootstrap
advice-on-failure:
@echo
@echo " \"make ${make-target}\" failed with exit status ${exit-status}."
@echo "make ${make-target}\" failed with exit status ${exit-status}."
@cat Makefile | \
sed -n '/^# ADVICE-ON-FAILURE-BEGIN:${make-target}/,$${p;/^# ADVICE-ON-FAILURE-END:${make-target}/q};' | \
sed 's/^# //' | grep -v '^ADVICE-ON-FAILURE-'

View file

@ -1431,7 +1431,7 @@ exec_byte_code (Lisp_Object fun, ptrdiff_t args_template,
NEXT;
CASE (Binteractive_p): /* Obsolete since 24.1. */
PUSH (call0 (intern ("interactive-p")));
PUSH (call0 (Qinteractive_p));
NEXT;
CASE (Bforward_char):
@ -1749,6 +1749,8 @@ get_byte_code_arity (Lisp_Object args_template)
void
syms_of_bytecode (void)
{
DEFSYM (Qinteractive_p, "interactive-p");
defsubr (&Sbyte_code);
defsubr (&Sinternal_stack_stats);

View file

@ -5555,6 +5555,10 @@ syms_of_font (void)
DEFSYM (Qopentype, "opentype");
/* Currently used by hbfont.c, which has no syms_of_hbfont function
of its own. */
DEFSYM (Qcanonical_combining_class, "canonical-combining-class");
/* Important character set symbols. */
DEFSYM (Qascii_0, "ascii-0");
DEFSYM (Qiso8859_1, "iso8859-1");

View file

@ -249,7 +249,7 @@ uni_combining (hb_unicode_funcs_t *funcs, hb_codepoint_t ch, void *user_data)
if (!combining_class_loaded)
{
canonical_combining_class_table =
uniprop_table (intern ("canonical-combining-class"));
uniprop_table (Qcanonical_combining_class);
if (NILP (canonical_combining_class_table))
emacs_abort ();
staticpro (&canonical_combining_class_table);

View file

@ -5540,15 +5540,15 @@ On MS Windows, this returns nothing useful. */)
switch (DoesBackingStore (dpyinfo->screen))
{
case Always:
result = intern ("always");
result = Qalways;
break;
case WhenMapped:
result = intern ("when-mapped");
result = Qwhen_mapped;
break;
case NotUseful:
result = intern ("not-useful");
result = Qnot_useful;
break;
default:
@ -5577,22 +5577,22 @@ If omitted or nil, that stands for the selected frame's display.
switch (dpyinfo->visual_info.class)
{
case StaticGray:
result = intern ("static-gray");
result = Qstatic_gray;
break;
case GrayScale:
result = intern ("gray-scale");
result = Qgray_scale;
break;
case StaticColor:
result = intern ("static-color");
result = Qstatic_color;
break;
case PseudoColor:
result = intern ("pseudo-color");
result = Qpseudo_color;
break;
case TrueColor:
result = intern ("true-color");
result = Qtrue_color;
break;
case DirectColor:
result = intern ("direct-color");
result = Qdirect_color;
break;
default:
error ("Display has an unknown visual class");
@ -8309,9 +8309,9 @@ x_create_tip_frame (struct x_display_info *dpyinfo, Lisp_Object parms)
disptype = Qmono;
else if (FRAME_X_VISUAL_INFO (f)->class == GrayScale
|| FRAME_X_VISUAL_INFO (f)->class == StaticGray)
disptype = intern ("grayscale");
disptype = Qgrayscale;
else
disptype = intern ("color");
disptype = Qcolor;
if (NILP (Fframe_parameter (frame, Qdisplay_type)))
{
@ -8973,8 +8973,8 @@ Text larger than the specified size is clipped. */)
start_timer:
/* Let the tip disappear after timeout seconds. */
tip_timer = call3 (intern ("run-at-time"), timeout, Qnil,
intern ("x-hide-tip"));
tip_timer = call3 (Qrun_at_time, timeout, Qnil,
Qx_hide_tip);
return unbind_to (count, Qnil);
}
@ -10072,6 +10072,23 @@ eliminated in future versions of Emacs. */);
/* Tell Emacs about this window system. */
Fprovide (Qx, Qnil);
/* Used by Fx_show_tip. */
DEFSYM (Qrun_at_time, "run-at-time");
DEFSYM (Qx_hide_tip, "x-hide-tip");
/* Used by display class and backing store reporting functions. */
DEFSYM (Qalways, "always");
DEFSYM (Qwhen_mapped, "when-mapped");
DEFSYM (Qnot_useful, "not-useful");
DEFSYM (Qstatic_gray, "static-gray");
DEFSYM (Qgray_scale, "gray-scale");
DEFSYM (Qstatic_color, "static-color");
DEFSYM (Qpseudo_color, "pseudo-color");
DEFSYM (Qtrue_color, "true-color");
DEFSYM (Qdirect_color, "direct-color");
DEFSYM (Qgrayscale, "grayscale");
DEFSYM (Qcolor, "color");
#ifdef HAVE_XINPUT2
DEFSYM (Qxinput2, "xinput2");

View file

@ -253,9 +253,9 @@ xfont_supported_scripts (Display *display, char *fontname, Lisp_Object props,
/* Two special cases to avoid opening rather big fonts. */
if (EQ (AREF (props, 2), Qja))
return list2 (intern ("kana"), intern ("han"));
return list2 (Qkana, Qhan);
if (EQ (AREF (props, 2), Qko))
return list1 (intern ("hangul"));
return list1 (Qhangul);
scripts = Fgethash (props, xfont_scripts_cache, Qt);
if (EQ (scripts, Qt))
{
@ -1130,19 +1130,19 @@ static void syms_of_xfont_for_pdumper (void);
struct font_driver const xfont_driver =
{
.type = LISPSYM_INITIALLY (Qx),
.get_cache = xfont_get_cache,
.list = xfont_list,
.match = xfont_match,
.list_family = xfont_list_family,
.open_font = xfont_open,
.close_font = xfont_close,
.prepare_face = xfont_prepare_face,
.has_char = xfont_has_char,
.encode_char = xfont_encode_char,
.text_extents = xfont_text_extents,
.draw = xfont_draw,
.check = xfont_check,
.type = LISPSYM_INITIALLY (Qx),
.get_cache = xfont_get_cache,
.list = xfont_list,
.match = xfont_match,
.list_family = xfont_list_family,
.open_font = xfont_open,
.close_font = xfont_close,
.prepare_face = xfont_prepare_face,
.has_char = xfont_has_char,
.encode_char = xfont_encode_char,
.text_extents = xfont_text_extents,
.draw = xfont_draw,
.check = xfont_check,
};
void
@ -1153,6 +1153,10 @@ syms_of_xfont (void)
staticpro (&xfont_scratch_props);
xfont_scratch_props = make_nil_vector (8);
pdumper_do_now_and_after_load (syms_of_xfont_for_pdumper);
DEFSYM (Qkana, "kana");
DEFSYM (Qhan, "han");
DEFSYM (Qhangul, "hangul");
}
static void

View file

@ -511,7 +511,7 @@ Do not call this function yourself. */)
this at the wrong time. */
if (doing_interact && ! kill_emacs)
{
bool cancel_shutdown = ! NILP (call0 (intern ("emacs-session-save")));
bool cancel_shutdown = ! NILP (call0 (Qemacs_session_save));
SmcInteractDone (smc_conn, cancel_shutdown);
SmcSaveYourselfDone (smc_conn, True);
@ -542,6 +542,8 @@ Do not call this function yourself. */)
void
syms_of_xsmfns (void)
{
DEFSYM (Qemacs_session_save, "emacs-session-save");
DEFVAR_LISP ("x-session-id", Vx_session_id,
doc: /* The session id Emacs got from the session manager for this session.
Changing the value does not change the session id used by Emacs.