diff options
author | Dmitry Antipov <dmantipov@yandex.ru> | 2014-09-22 10:06:19 +0400 |
---|---|---|
committer | Dmitry Antipov <dmantipov@yandex.ru> | 2014-09-22 10:06:19 +0400 |
commit | 99c3fad7d44ceced111d8fa1b46d938bd4c67c73 (patch) | |
tree | 4860666f44b9de20ac38373336b60e78bbc65053 /src/font.c | |
parent | f135e94e4ecb4c6d3f88c7e028c935c2858f2e02 (diff) | |
download | emacs-99c3fad7d44ceced111d8fa1b46d938bd4c67c73.tar.gz |
Avoid extra call to oblookup when interning symbols.
* lisp.h (intern_driver): Add prototype.
* lread.c (intern_driver): New function.
(intern1, intern_c_string_1, Fintern):
* font.c (font_intern_prop):
* w32font.c (intern_font_name): Use it.
Diffstat (limited to 'src/font.c')
-rw-r--r-- | src/font.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/font.c b/src/font.c index 57cc4aa0b2b..83860090820 100644 --- a/src/font.c +++ b/src/font.c @@ -277,10 +277,8 @@ static int num_font_drivers; Lisp_Object font_intern_prop (const char *str, ptrdiff_t len, bool force_symbol) { - ptrdiff_t i; - Lisp_Object tem; - Lisp_Object obarray; - ptrdiff_t nbytes, nchars; + ptrdiff_t i, nbytes, nchars; + Lisp_Object tem, name, obarray; if (len == 1 && *str == '*') return Qnil; @@ -311,12 +309,11 @@ font_intern_prop (const char *str, ptrdiff_t len, bool force_symbol) parse_str_as_multibyte ((unsigned char *) str, len, &nchars, &nbytes); tem = oblookup (obarray, str, (len == nchars || len != nbytes) ? len : nchars, len); - if (SYMBOLP (tem)) return tem; - tem = make_specified_string (str, nchars, len, - len != nchars && len == nbytes); - return Fintern (tem, obarray); + name = make_specified_string (str, nchars, len, + len != nchars && len == nbytes); + return intern_driver (name, obarray, XINT (tem)); } /* Return a pixel size of font-spec SPEC on frame F. */ |