From unknown Sun Jun 22 00:06:13 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#39133 <39133@debbugs.gnu.org> To: bug#39133 <39133@debbugs.gnu.org> Subject: Status: 28.0.50; Emacs slowdown on special char Reply-To: bug#39133 <39133@debbugs.gnu.org> Date: Sun, 22 Jun 2025 07:06:13 +0000 retitle 39133 28.0.50; Emacs slowdown on special char reassign 39133 emacs submitter 39133 Evgeny Zajcev severity 39133 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 14 08:21:46 2020 Received: (at submit) by debbugs.gnu.org; 14 Jan 2020 13:21:46 +0000 Received: from localhost ([127.0.0.1]:60795 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irM8f-0001E6-Na for submit@debbugs.gnu.org; Tue, 14 Jan 2020 08:21:46 -0500 Received: from lists.gnu.org ([209.51.188.17]:56432) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irM8d-0001Dw-CS for submit@debbugs.gnu.org; Tue, 14 Jan 2020 08:21:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:46609) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1irM8Z-0003SC-Vu for bug-gnu-emacs@gnu.org; Tue, 14 Jan 2020 08:21:43 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1irM8W-0001TS-Ty for bug-gnu-emacs@gnu.org; Tue, 14 Jan 2020 08:21:39 -0500 Received: from mail-lj1-x22e.google.com ([2a00:1450:4864:20::22e]:35022) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1irM8W-0001S1-EK for bug-gnu-emacs@gnu.org; Tue, 14 Jan 2020 08:21:36 -0500 Received: by mail-lj1-x22e.google.com with SMTP id j1so14302874lja.2 for ; Tue, 14 Jan 2020 05:21:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=dT1+R2R1DcDzZHNwGtyrIvDJkPjfpNefyIyHE6YckKk=; b=FMDIF3MY1Qga1FwsVFOlNjz9DMd3+9Ev8mn7XHxiXacBLi2H7RmL0TxsqtmYGjW20x qiRXHa7XLZKYRXB33m5FqTfTNh7Pbuoc7wB093LSpUTWA0pyV5dQprj/U8u8XOCmZUMG mSvgEtRyY2HDhcMiQsKqiMdEyxiYrcWx8FZQDgU4DVZFpR/NrpIHs8TAGnUkt03iV/D8 reekx5mJwhNuIrbCptJW4KWg6bfQ9/lJ8JbwibDqqzT0D7jUitaX2S0vubYzblAalZoq Fw16HPA4wDsMOeIO2QRK12wemySuJralDVDtil+aSHRMGAR0gOUP8x/+EGt0kH51JPll oCnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=dT1+R2R1DcDzZHNwGtyrIvDJkPjfpNefyIyHE6YckKk=; b=F/SHVCIiHcl+O2hirFvCZzyi4A+82Tw0f7F4Muabm3faiyMmd/kmQtrDBsbGIjtSBM jyg3fckgwHoCV4eCJPA/AaGZZkispKz01gGbAWXc5Wxbfm6++Px9xlItVXxO5ObCqazv AnvWPsuOhGL3rWLECIIrhVJnmzfTMxzKSMXJKPG0cg8+ZstIWiMYu+kRwt53631iV/YL SxQUleNHjtzEZmZC8vQ+osVmTcvVuInkhqSUNYEVx1aavQUTbeMyAEcL51FST35KI+5g s4hOlnwVD+2uHeTsqNpvn7M3RNN+14QcowgTsIFwDNheMQ+zyuBFOh45rR9J5R1gkWfH hFWw== X-Gm-Message-State: APjAAAWOVnj5eKtrcnZj5jLEUE1SU0Zl0JAH3OSSqOHr6mR/lMpW0xAK oahZoH+YfML66EtSjdu/ieeYo0q36LCWdjwHLqyZrPXh X-Google-Smtp-Source: APXvYqwkz36uxBEUAxilxzrSfOuBdJ8WxV5GxI49vvkiz0fuqiAmwMCg6hS7HA1QB6oFGEg8ept/Fo5Srlk0Qas4LGM= X-Received: by 2002:a2e:7d01:: with SMTP id y1mr14632170ljc.100.1579008094039; Tue, 14 Jan 2020 05:21:34 -0800 (PST) MIME-Version: 1.0 From: Evgeny Zajcev Date: Tue, 14 Jan 2020 16:21:23 +0300 Message-ID: Subject: 28.0.50; Emacs slowdown on special char To: bug-gnu-emacs@gnu.org Content-Type: multipart/alternative; boundary="0000000000008af124059c1978f3" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::22e X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --0000000000008af124059c1978f3 Content-Type: text/plain; charset="UTF-8" I'm experiencing extreme Emacs slowdown when VARIATION SELECTOR-16 char is used somewhere in Emacs buffer. For example, I just executed: (insert "a\xfe0f") in *scratch* buffer. Moving cursor (when this char is visible) become unbearable. Here is the results of cpu profiling: - command-execute 776 62% - call-interactively 776 62% - funcall-interactively 675 54% - previous-line 476 38% - line-move 476 38% - line-move-1 476 38% + vertical-motion 225 18% - next-line 198 15% - line-move 198 15% - line-move-1 198 15% + vertical-motion 94 7% + execute-extended-command 1 0% + byte-code 101 8% auto-compose-chars 185 14% + timer-event-handler 175 14% - redisplay_internal (C function) 75 6% auto-compose-chars 75 6% - ... 30 2% Automatic GC 30 2% As I remember I did not experienced something similar in Emacs 26/27 Thanks -------------------- In GNU Emacs 28.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version 3.18.9, cairo version 1.14.6) of 2020-01-13 built on wrt Repository revision: 7c5d6a2afc6c23a7fff8456f506ee2aa2d37a3b9 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.11804000 System Description: Ubuntu 16.04.1 LTS Recent messages: next-line: End of buffer [2 times] Mark activated [2 times] CPU profiler stopped CPU profiler started Mark set Quit Mark set CPU profiler stopped CPU profiler started Mark set Configured using: 'configure --with-modules --with-cairo' Configured features: XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY GNUTLS LIBXML2 FREETYPE HARFBUZZ LIBOTF ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS JSON PDUMPER LCMS2 GMP Important settings: value of $LC_MONETARY: ru_RU.UTF-8 value of $LC_NUMERIC: ru_RU.UTF-8 value of $LC_TIME: ru_RU.UTF-8 value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: tracking-mode: t telega-mode-line-mode: t icomplete-mode: t save-place-mode: t pyvenv-mode: t shell-dirtrack-mode: t display-time-mode: t global-undo-tree-mode: t undo-tree-mode: t override-global-mode: t cl-old-struct-compat-mode: t global-eldoc-mode: t eldoc-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t auto-fill-function: do-auto-fill transient-mark-mode: t Load-path shadows: /home/lg/.emacs.d/elpa/circe-20180105.1158/tracking hides /home/lg/.emacs.d/elpa/tracking-20171210.2102/tracking /home/lg/.emacs.d/elpa/circe-20180105.1158/shorten hides /home/lg/.emacs.d/elpa/tracking-20171210.2102/shorten ~/dev/xelb/xcb-renderutil hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-renderutil ~/dev/xelb/xcb-xinput hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xinput ~/dev/xelb/xcb-shape hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-shape ~/dev/xelb/xcb-icccm hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-icccm ~/dev/xelb/xcb-dri3 hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-dri3 ~/dev/xelb/xcb-xc_misc hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xc_misc ~/dev/xelb/xcb-render hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-render ~/dev/xelb/xcb-xf86vidmode hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xf86vidmode ~/dev/xelb/xcb-cursor hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-cursor ~/dev/xelb/xcb-dri2 hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-dri2 ~/dev/xelb/xcb-xprint hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xprint ~/dev/xelb/xcb-systemtray hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-systemtray ~/dev/xelb/xcb-composite hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-composite ~/dev/xelb/xcb-types hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-types ~/dev/xelb/xcb-dpms hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-dpms ~/dev/xelb/xcb-bigreq hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-bigreq ~/dev/xelb/xcb-xselinux hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xselinux ~/dev/xelb/xcb-xproto hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xproto ~/dev/xelb/xcb-xlib hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xlib ~/dev/xelb/xcb-xf86dri hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xf86dri ~/dev/xelb/xcb hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb ~/dev/xelb/xcb-xembed hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xembed ~/dev/xelb/xcb-present hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-present ~/dev/xelb/xcb-screensaver hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-screensaver ~/dev/xelb/xcb-shm hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-shm ~/dev/xelb/xcb-ge hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-ge ~/dev/xelb/xcb-xinerama hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xinerama ~/dev/xelb/xcb-xim hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xim ~/dev/xelb/xcb-damage hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-damage ~/dev/xelb/xcb-glx hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-glx ~/dev/xelb/xcb-sync hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-sync ~/dev/xelb/xcb-res hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-res ~/dev/xelb/xcb-xfixes hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xfixes ~/dev/xelb/xcb-xtest hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xtest ~/dev/xelb/xcb-keysyms hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-keysyms ~/dev/xelb/xcb-ewmh hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-ewmh ~/dev/xelb/el_client hides /home/lg/.emacs.d/elpa/xelb-0.18/el_client ~/dev/xelb/xcb-record hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-record ~/dev/xelb/xcb-xv hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xv ~/dev/xelb/xcb-randr hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-randr ~/dev/xelb/xcb-xkb hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xkb ~/dev/xelb/xcb-xevie hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xevie ~/dev/xelb/xcb-xvmc hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xvmc ~/dev/xelb/xelb hides /home/lg/.emacs.d/elpa/xelb-0.18/xelb Features: (shadow sort mail-extr emacsbug sendmail descr-text bug-reference cc-mode cc-fonts cc-guess cc-menus cc-styles cc-align apropos profiler find-func disp-table fill-column-indicator vc vc-dispatcher vc-git smerge-mode git log-edit pcvs-util add-log misearch multi-isearch wordfreq face-remap rect mm-archive gnutls network-stream url-cache multitran mule-util hl-line tracking shorten telega telega-modes telega-webpage telega-tme visual-fill-column telega-chat telega-i18n telega-company telega-user telega-sticker telega-notifications notifications dbus telega-msg telega-vvnote telega-media telega-root telega-voip telega-ffplay telega-info telega-filter telega-ins telega-inline telega-tdlib telega-util color svg dom xml ewoc telega-server telega-core cursor-sensor telega-customize exwm-wconf winner exwm-misc exwm exwm-match exwm-input xcb-keysyms exwm-manage exwm-floating xcb-cursor xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb xcb-xproto xcb-types work desktop frameset gnus-demon nntp gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc gnus-spec gnus-win nnoo gnus-int gnus-range message rfc822 mml mml-sec epa epg epg-config mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader gnus nnheader gnus-util rmail rmail-loaddefs text-property-search mail-utils autoinsert cal-menu calendar cal-loaddefs icomplete saveplace cython-mode company-capf company pcase help-fns radix-tree elpy find-file-in-project ivy delsel ivy-overlay ffap windmove diff-mode elpy-shell pyvenv elpy-profile elpy-django elpy-refactor python tramp-sh tramp tramp-loaddefs trampver tramp-integration tramp-compat parse-time iso8601 time-date ls-lisp format-spec grep files-x etags fileloop generator xref project cus-edit cus-start cus-load wid-edit python-mode info-look which-func imenu shell pcomplete hippie-exp flymake-proc flymake warnings thingatpt compile cc-cmds cc-engine cc-vars cc-defs dot-mode gist dired dired-loaddefs gh-gist gh-oauth gh-api logito gh-cache pcache gh-auth gh-url url-http url-auth mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-gw nsm rmc puny timezone eieio-base server time google-translate google-translate-default-ui google-translate-core-ui google-translate-core google-translate-tk url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap whitespace undo-tree diff ido comint ansi-color ring avoid ibuffer-vc ibuf-ext ibuffer ibuffer-loaddefs edmacro kmacro browse-kill-ring derived cl cl-extra help-mode use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode use-package-core tex-site gh-common gh-profile rx s marshal eieio-compat dash advice info package easymenu browse-url url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 844236 204685) (symbols 48 53129 1) (strings 32 212317 6977) (string-bytes 1 7670144) (vectors 16 104746) (vector-slots 8 3029493 25214) (floats 8 5990 341) (intervals 56 26458 1076) (buffers 1000 53) (heap 1024 91340 6613)) -- lg --0000000000008af124059c1978f3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I'm experiencing extreme Emacs slowdown when VARIATION= SELECTOR-16 char
is used somewhere in Emacs buffer.=C2=A0 For example, = I just executed:

=C2=A0 =C2=A0(insert "a\xfe0f")

in= *scratch* buffer.=C2=A0 Moving cursor (when this char is visible) becomeunbearable.=C2=A0 Here is the results of cpu profiling:

=C2=A0 - c= ommand-execute =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 776 =C2=A062%
=C2=A0 =C2=A0- call-int= eractively =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 776 =C2=A062%
=C2=A0 =C2=A0 - funcall-interactively = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 675 =C2= =A054%
=C2=A0 =C2=A0 =C2=A0- previous-line =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0476 =C2= =A038%
=C2=A0 =C2=A0 =C2=A0 - line-move =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 476 = =C2=A038%
=C2=A0 =C2=A0 =C2=A0 =C2=A0- line-move-1 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A047= 6 =C2=A038%
=C2=A0 =C2=A0 =C2=A0 =C2=A0 + vertical-motion =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 225 =C2=A018%=C2=A0 =C2=A0 =C2=A0- next-line =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0198 =C2= =A015%
=C2=A0 =C2=A0 =C2=A0 - line-move =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 198 = =C2=A015%
=C2=A0 =C2=A0 =C2=A0 =C2=A0- line-move-1 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A019= 8 =C2=A015%
=C2=A0 =C2=A0 =C2=A0 =C2=A0 + vertical-motion =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A094 =C2=A0= 7%
=C2=A0 =C2=A0 =C2=A0+ execute-extended-command =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 1 =C2=A0 0%
=C2=A0 =C2=A0 + byte-= code =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 101 =C2=A0 8%
=C2=A0 =C2=A0 auto-= compose-chars =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0185 =C2=A014%
=C2=A0 + timer-event-handler = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 175 =C2=A014%
=C2=A0 - redisplay_internal (C function) =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A075 =C2=A0 6%
=C2=A0 =C2=A0 =C2=A0auto-= compose-chars =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A075 =C2=A0 6%
=C2=A0 - ... =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A030 =C2=A0 2%
=C2=A0 = =C2=A0 =C2=A0Automatic GC =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A030 =C2=A0 2%
=
As I remember I did not experienced something similar in Emacs 26/27
Thanks

--------------------
In GNU Emacs 28.0.50 (build 3, x= 86_64-pc-linux-gnu, GTK+ Version 3.18.9, cairo version 1.14.6)
=C2=A0of = 2020-01-13 built on wrt
Repository revision: 7c5d6a2afc6c23a7fff8456f506= ee2aa2d37a3b9
Repository branch: master
Windowing system distributor = 'The X.Org Foundation', version 11.0.11804000
System Description= : Ubuntu 16.04.1 LTS

Recent messages:
next-line: End of buffer [2= times]
Mark activated [2 times]
CPU profiler stopped
CPU profiler= started
Mark set
Quit
Mark set
CPU profiler stopped
CPU pro= filer started
Mark set

Configured using:
=C2=A0'configure = --with-modules --with-cairo'

Configured features:
XPM JPEG TI= FF GIF PNG RSVG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY
INOTIFY GNUTLS LI= BXML2 FREETYPE HARFBUZZ LIBOTF ZLIB TOOLKIT_SCROLL_BARS
GTK3 X11 XDBE XI= M MODULES THREADS JSON PDUMPER LCMS2 GMP

Important settings:
=C2= =A0 value of $LC_MONETARY: ru_RU.UTF-8
=C2=A0 value of $LC_NUMERIC: ru_R= U.UTF-8
=C2=A0 value of $LC_TIME: ru_RU.UTF-8
=C2=A0 value of $LANG: = en_US.UTF-8
=C2=A0 locale-coding-system: utf-8-unix

Major mode: L= isp Interaction

Minor modes in effect:
=C2=A0 tracking-mode: t=C2=A0 telega-mode-line-mode: t
=C2=A0 icomplete-mode: t
=C2=A0 save= -place-mode: t
=C2=A0 pyvenv-mode: t
=C2=A0 shell-dirtrack-mode: t=C2=A0 display-time-mode: t
=C2=A0 global-undo-tree-mode: t
=C2=A0 u= ndo-tree-mode: t
=C2=A0 override-global-mode: t
=C2=A0 cl-old-struct-= compat-mode: t
=C2=A0 global-eldoc-mode: t
=C2=A0 eldoc-mode: t
= =C2=A0 mouse-wheel-mode: t
=C2=A0 file-name-shadow-mode: t
=C2=A0 glo= bal-font-lock-mode: t
=C2=A0 auto-composition-mode: t
=C2=A0 auto-enc= ryption-mode: t
=C2=A0 auto-compression-mode: t
=C2=A0 column-number-= mode: t
=C2=A0 line-number-mode: t
=C2=A0 auto-fill-function: do-auto= -fill
=C2=A0 transient-mark-mode: t

Load-path shadows:
/home/l= g/.emacs.d/elpa/circe-20180105.1158/tracking hides /home/lg/.emacs.d/elpa/t= racking-20171210.2102/tracking
/home/lg/.emacs.d/elpa/circe-20180105.115= 8/shorten hides /home/lg/.emacs.d/elpa/tracking-20171210.2102/shorten
~/= dev/xelb/xcb-renderutil hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-renderut= il
~/dev/xelb/xcb-xinput hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xinp= ut
~/dev/xelb/xcb-shape hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-shape=
~/dev/xelb/xcb-icccm hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-icccm~/dev/xelb/xcb-dri3 hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-dri3
~/= dev/xelb/xcb-xc_misc hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xc_misc
= ~/dev/xelb/xcb-render hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-render
= ~/dev/xelb/xcb-xf86vidmode hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xf86v= idmode
~/dev/xelb/xcb-cursor hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-= cursor
~/dev/xelb/xcb-dri2 hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-dr= i2
~/dev/xelb/xcb-xprint hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xpri= nt
~/dev/xelb/xcb-systemtray hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-= systemtray
~/dev/xelb/xcb-composite hides /home/lg/.emacs.d/elpa/xelb-0.= 18/xcb-composite
~/dev/xelb/xcb-types hides /home/lg/.emacs.d/elpa/xelb-= 0.18/xcb-types
~/dev/xelb/xcb-dpms hides /home/lg/.emacs.d/elpa/xelb-0.1= 8/xcb-dpms
~/dev/xelb/xcb-bigreq hides /home/lg/.emacs.d/elpa/xelb-0.18/= xcb-bigreq
~/dev/xelb/xcb-xselinux hides /home/lg/.emacs.d/elpa/xelb-0.1= 8/xcb-xselinux
~/dev/xelb/xcb-xproto hides /home/lg/.emacs.d/elpa/xelb-0= .18/xcb-xproto
~/dev/xelb/xcb-xlib hides /home/lg/.emacs.d/elpa/xelb-0.1= 8/xcb-xlib
~/dev/xelb/xcb-xf86dri hides /home/lg/.emacs.d/elpa/xelb-0.18= /xcb-xf86dri
~/dev/xelb/xcb hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb~/dev/xelb/xcb-xembed hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xembed~/dev/xelb/xcb-present hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-present=
~/dev/xelb/xcb-screensaver hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-s= creensaver
~/dev/xelb/xcb-shm hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb= -shm
~/dev/xelb/xcb-ge hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-ge
= ~/dev/xelb/xcb-xinerama hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xinerama=
~/dev/xelb/xcb-xim hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xim
~/= dev/xelb/xcb-damage hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-damage
~/= dev/xelb/xcb-glx hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-glx
~/dev/xe= lb/xcb-sync hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-sync
~/dev/xelb/x= cb-res hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-res
~/dev/xelb/xcb-xfi= xes hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xfixes
~/dev/xelb/xcb-xte= st hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xtest
~/dev/xelb/xcb-keysy= ms hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-keysyms
~/dev/xelb/xcb-ewm= h hides /home/lg/.emacs.d/elpa/xelb-0.18/xcb-ewmh
~/dev/xelb/el_client h= ides /home/lg/.emacs.d/elpa/xelb-0.18/el_client
~/dev/xelb/xcb-record hi= des /home/lg/.emacs.d/elpa/xelb-0.18/xcb-record
~/dev/xelb/xcb-xv hides = /home/lg/.emacs.d/elpa/xelb-0.18/xcb-xv
~/dev/xelb/xcb-randr hides /home= /lg/.emacs.d/elpa/xelb-0.18/xcb-randr
~/dev/xelb/xcb-xkb hides /home/lg/= .emacs.d/elpa/xelb-0.18/xcb-xkb
~/dev/xelb/xcb-xevie hides /home/lg/.ema= cs.d/elpa/xelb-0.18/xcb-xevie
~/dev/xelb/xcb-xvmc hides /home/lg/.emacs.= d/elpa/xelb-0.18/xcb-xvmc
~/dev/xelb/xelb hides /home/lg/.emacs.d/elpa/x= elb-0.18/xelb

Features:
(shadow sort mail-extr emacsbug sendmail = descr-text bug-reference
cc-mode cc-fonts cc-guess cc-menus cc-styles cc= -align apropos profiler
find-func disp-table fill-column-indicator vc vc= -dispatcher vc-git
smerge-mode git log-edit pcvs-util add-log misearch m= ulti-isearch
wordfreq face-remap rect mm-archive gnutls network-stream u= rl-cache
multitran mule-util hl-line tracking shorten telega telega-mode= s
telega-webpage telega-tme visual-fill-column telega-chat telega-i18ntelega-company telega-user telega-sticker telega-notifications
notific= ations dbus telega-msg telega-vvnote telega-media telega-root
telega-voi= p telega-ffplay telega-info telega-filter telega-ins
telega-inline teleg= a-tdlib telega-util color svg dom xml ewoc
telega-server telega-core cur= sor-sensor telega-customize exwm-wconf
winner exwm-misc exwm exwm-match = exwm-input xcb-keysyms exwm-manage
exwm-floating xcb-cursor xcb-render e= xwm-layout exwm-workspace exwm-core
xcb-ewmh xcb-icccm xcb xcb-xproto xc= b-types work desktop frameset
gnus-demon nntp gnus-group gnus-undo gnus-= start gnus-cloud nnimap nnmail
mail-source utf7 netrc gnus-spec gnus-win= nnoo gnus-int gnus-range
message rfc822 mml mml-sec epa epg epg-config = mm-decode mm-bodies
mm-encode mailabbrev gmm-utils mailheader gnus nnhea= der gnus-util rmail
rmail-loaddefs text-property-search mail-utils autoi= nsert cal-menu
calendar cal-loaddefs icomplete saveplace cython-mode com= pany-capf
company pcase help-fns radix-tree elpy find-file-in-project iv= y delsel
ivy-overlay ffap windmove diff-mode elpy-shell pyvenv elpy-prof= ile
elpy-django elpy-refactor python tramp-sh tramp tramp-loaddefs tramp= ver
tramp-integration tramp-compat parse-time iso8601 time-date ls-lisp<= br>format-spec grep files-x etags fileloop generator xref project cus-edit<= br>cus-start cus-load wid-edit python-mode info-look which-func imenu shell=
pcomplete hippie-exp flymake-proc flymake warnings thingatpt compilecc-cmds cc-engine cc-vars cc-defs dot-mode gist dired dired-loaddefs
gh= -gist gh-oauth gh-api logito gh-cache pcache gh-auth gh-url url-http
url= -auth mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr u= rl-gw nsm rmc puny timezone eieio-base server time
google-translate goog= le-translate-default-ui google-translate-core-ui
google-translate-core g= oogle-translate-tk url url-proxy url-privacy
url-expand url-methods url-= history url-cookie url-domsuf url-util
mailcap whitespace undo-tree diff= ido comint ansi-color ring avoid
ibuffer-vc ibuf-ext ibuffer ibuffer-lo= addefs edmacro kmacro
browse-kill-ring derived cl cl-extra help-mode use= -package
use-package-ensure use-package-delight use-package-diminish
= use-package-bind-key bind-key easy-mmode use-package-core tex-site
gh-co= mmon gh-profile rx s marshal eieio-compat dash advice info package
easym= enu browse-url url-handlers url-parse auth-source cl-seq eieio
eieio-cor= e cl-macs eieio-loaddefs password-cache json subr-x map
url-vars seq byt= e-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib
tooltip eldoc el= ectric uniquify ediff-hook vc-hooks lisp-float-type
mwheel term/x-win x-= win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe t= abulated-list replace newcomment text-mode elisp-mode
lisp-mode prog-mod= e register page tab-bar menu-bar rfn-eshadow isearch
timer select scroll= -bar mouse jit-lock font-lock syntax facemenu
font-core term/tty-colors = frame minibuffer cl-generic cham georgian
utf-8-lang misc-lang vietnames= e tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew gree= k romanian slovak czech european
ethiopic indian cyrillic chinese compos= ite charscript charprop
case-table epa-hook jka-cmpr-hook help simple ab= brev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroex= p files
text-properties overlay sha1 md5 base64 format env code-pages mu= le
custom widget hashtable-print-readable backquote threads dbusbind
= inotify lcms2 dynamic-setting system-font-setting font-render-setting
ca= iro move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)
<= br>Memory information:
((conses 16 844236 204685)
=C2=A0(symbols 48 5= 3129 1)
=C2=A0(strings 32 212317 6977)
=C2=A0(string-bytes 1 7670144)=
=C2=A0(vectors 16 104746)
=C2=A0(vector-slots 8 3029493 25214)
= =C2=A0(floats 8 5990 341)
=C2=A0(intervals 56 26458 1076)
=C2=A0(buff= ers 1000 53)
=C2=A0(heap 1024 91340 6613))

--
lg
--0000000000008af124059c1978f3-- From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 14 10:26:45 2020 Received: (at 39133) by debbugs.gnu.org; 14 Jan 2020 15:26:45 +0000 Received: from localhost ([127.0.0.1]:33410 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irO5c-0004Uq-UL for submit@debbugs.gnu.org; Tue, 14 Jan 2020 10:26:45 -0500 Received: from eggs.gnu.org ([209.51.188.92]:32776) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irO5a-0004Ua-NY for 39133@debbugs.gnu.org; Tue, 14 Jan 2020 10:26:43 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:47308) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1irO5V-0002t4-2B; Tue, 14 Jan 2020 10:26:37 -0500 Received: from [176.228.60.248] (port=4191 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1irO5T-0006gH-Us; Tue, 14 Jan 2020 10:26:36 -0500 Date: Tue, 14 Jan 2020 17:26:45 +0200 Message-Id: <83lfqa5aa2.fsf@gnu.org> From: Eli Zaretskii To: Evgeny Zajcev In-reply-to: (message from Evgeny Zajcev on Tue, 14 Jan 2020 16:21:23 +0300) Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 39133 Cc: 39133@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Evgeny Zajcev > Date: Tue, 14 Jan 2020 16:21:23 +0300 > > I'm experiencing extreme Emacs slowdown when VARIATION SELECTOR-16 char > is used somewhere in Emacs buffer. For example, I just executed: > > (insert "a\xfe0f") > > in *scratch* buffer. Moving cursor (when this char is visible) become > unbearable. Here is the results of cpu profiling: > > - command-execute 776 62% > - call-interactively 776 62% > - funcall-interactively 675 54% > - previous-line 476 38% > - line-move 476 38% > - line-move-1 476 38% > + vertical-motion 225 18% Does it help to set inhibit-compacting-font-caches non-nil? > As I remember I did not experienced something similar in Emacs 26/27 I don't think Emacs < 27 supported variation selectors, did it? From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 14 11:24:14 2020 Received: (at 39133) by debbugs.gnu.org; 14 Jan 2020 16:24:14 +0000 Received: from localhost ([127.0.0.1]:33458 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irOzF-0005yR-PS for submit@debbugs.gnu.org; Tue, 14 Jan 2020 11:24:14 -0500 Received: from mail-wr1-f46.google.com ([209.85.221.46]:46204) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irOzF-0005yC-0O for 39133@debbugs.gnu.org; Tue, 14 Jan 2020 11:24:13 -0500 Received: by mail-wr1-f46.google.com with SMTP id z7so12743640wrl.13 for <39133@debbugs.gnu.org>; Tue, 14 Jan 2020 08:24:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :mime-version:content-transfer-encoding; bh=wvb7F2prjRaAUSkxxWH1A24fsF07KXsSWyOt7q5xdkQ=; b=Zhjmm90gruWNvv7gwwPfeJ8xD2Q6Ye44KCeMbQXTvkTMM7mvtlnoPxan8pmc7riaFg cIVxwj6DwKnf714ZDQuhajvYbOhkODgOJWC1bdYe/2qM4P6BKVXKDXU2MKCwUHy5wui5 cAe/6XBX1fVu4ZqBoh7tLQrJv1inY0Z5T5UicYyWC3ZZ5bO78ZkY2aLsgDhcB8nT1PK7 LMuJOo6TmRYFKvLZHz185wM4GdrhrKe2Lj/HS8Ug7cpohNOYjxl/IQjHR9pnXYlMlUAw dK/I6iMMxPFiEEv3CMG5LgSYhXLqTlsVstsXQltIWY3I7WFBpet3e6ksOuhijSr8P0es Rk2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:mime-version:content-transfer-encoding; bh=wvb7F2prjRaAUSkxxWH1A24fsF07KXsSWyOt7q5xdkQ=; b=dUY5LDM5tUaG2uoi4ahz8vqHZrwGuEywTCEjnfarL/5jHBI85iEZIf9q1q81EiRtX2 Rc4+0iwwYwIzBvi/6BfI8qHEkeUNMNJJQ3yvsVtN7oGB28RXhbjEkTG6iwn0fWGl7C2b 6oB87pR69iN4HaXOn7tQNwk0dk1pF0XpngHZ0D3CIY4RqDyd1s0EoIMsVTQPVD6A9Pxn cdhMmT5KvN2Gxg95i/wO6GFKLrf2nIpY+HlvLAOP6J5kS4DZZyJLJGNpKoPvZz6ANpl4 rlLwJ/4X4K+XEdwk8YwQAayYK6EU75SJHpol5pvD19wWYDQY5qllaqkhhj8/4hupCXfl iFeQ== X-Gm-Message-State: APjAAAUALi9AJY6wEMSg9NMHmUmBjkEEYfqo8lMI7+jRKlnKKpuzB7BE wM3ofh49wKWF1KsOl0LrU5hnDjifJqI= X-Google-Smtp-Source: APXvYqzzOrGlg1c+UgM7FQEBWPyNLpEkemF323LNTfqFOSj2v8DQ8JDiaJn9MpxCE9bfEHtTEhrizg== X-Received: by 2002:a05:6000:1047:: with SMTP id c7mr26692873wrx.341.1579019046513; Tue, 14 Jan 2020 08:24:06 -0800 (PST) Received: from rpluim-mac ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id u8sm19243036wmm.15.2020.01.14.08.24.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2020 08:24:05 -0800 (PST) From: Robert Pluim To: Eli Zaretskii Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> Date: Tue, 14 Jan 2020 17:24:05 +0100 In-Reply-To: <83lfqa5aa2.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 14 Jan 2020 17:26:45 +0200") Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 39133 Cc: 39133@debbugs.gnu.org, Evgeny Zajcev X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Tue, 14 Jan 2020 17:26:45 +0200, Eli Zaretskii said: >> From: Evgeny Zajcev >> Date: Tue, 14 Jan 2020 16:21:23 +0300 >>=20 >> I'm experiencing extreme Emacs slowdown when VARIATION SELECTOR-16 c= har >> is used somewhere in Emacs buffer. For example, I just executed: >>=20 >> (insert "a\xfe0f") >>=20 >> in *scratch* buffer. Moving cursor (when this char is visible) beco= me >> unbearable. Here is the results of cpu profiling: >>=20 >> - command-execute 77= 6 62% >> - call-interactively 776= 62% >> - funcall-interactively 675 = 54% >> - previous-line 476 = 38% >> - line-move 476 3= 8% >> - line-move-1 476 38% >> + vertical-motion 225 18% Eli> Does it help to set inhibit-compacting-font-caches non-nil? >> As I remember I did not experienced something similar in Emacs 26/27 Eli> I don't think Emacs < 27 supported variation selectors, did it? It=CA=BCs coming from the caching in ftcrfont_glyph_extents: row =3D glyph / METRICS_NCOLS_PER_ROW; <=3D=3D glyph =3D=3D 0xFFFFFFFF, r= ow -> 0x1FFFFFF col =3D glyph % METRICS_NCOLS_PER_ROW; if (row >=3D ftcrfont_info->metrics_nrows) { ftcrfont_info->metrics =3D xrealloc (ftcrfont_info->metrics, sizeof (struct font_metrics *) * (row + 1)); memset (ftcrfont_info->metrics + ftcrfont_info->metrics_nrows, 0, (sizeof (struct font_metrics *) * (row + 1 - ftcrfont_info->metrics_nrows))); ftcrfont_info->metrics_nrows =3D row + 1; <=3D=3D=3D we=CA=BCre updat= ing metrics_nrows, lets look in ftfont.h } ftfont.h: #ifdef USE_CAIRO cairo_scaled_font_t *cr_scaled_font; /* Scale factor from the bitmap strike metrics in 1/64 pixels, used as the hb_position_t value in HarfBuzz, to those in (scaled) pixels. The value is 0 for scalable fonts. */ double bitmap_position_unit; /* Font metrics cache. */ struct font_metrics **metrics; short metrics_nrows; ^^^^^ oops! Now we end up calling xrealloc every time we enter ftctfont_glyph_extents for that glyph. Of course, I don=CA=BCt think glyph should be 0xFFFFFFFF, but that=CA=BCs a different problem. Robert From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 14 23:26:17 2020 Received: (at 39133) by debbugs.gnu.org; 15 Jan 2020 04:26:17 +0000 Received: from localhost ([127.0.0.1]:34052 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iraG0-0000Tf-Ts for submit@debbugs.gnu.org; Tue, 14 Jan 2020 23:26:17 -0500 Received: from mathmail.math.s.chiba-u.ac.jp ([133.82.132.2]:55993) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iraFy-0000TS-N3 for 39133@debbugs.gnu.org; Tue, 14 Jan 2020 23:26:15 -0500 Received: from mathent.math.s.chiba-u.ac.jp (mathent [192.168.32.5]) by mathmail.math.s.chiba-u.ac.jp (Postfix) with ESMTP id 4E961F08ED; Wed, 15 Jan 2020 13:26:11 +0900 (JST) (envelope-from mituharu@math.s.chiba-u.ac.jp) Date: Wed, 15 Jan 2020 13:26:11 +0900 Message-ID: From: YAMAMOTO Mitsuharu To: Robert Pluim Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char In-Reply-To: References: <83lfqa5aa2.fsf@gnu.org> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL/10.8 EasyPG/1.0.0 Emacs/26 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) Organization: Faculty of Science, Chiba University MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 39133 Cc: 39133@debbugs.gnu.org, Eli Zaretskii , Evgeny Zajcev , handa@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Wed, 15 Jan 2020 01:24:05 +0900, Robert Pluim wrote: >=20 > >>>>> On Tue, 14 Jan 2020 17:26:45 +0200, Eli Zaretskii sa= id: >=20 > >> From: Evgeny Zajcev > >> Date: Tue, 14 Jan 2020 16:21:23 +0300 > >>=20 > >> I'm experiencing extreme Emacs slowdown when VARIATION SELECTOR-16= char > >> is used somewhere in Emacs buffer. For example, I just executed: > >>=20 > >> (insert "a\xfe0f") > >>=20 > >> in *scratch* buffer. Moving cursor (when this char is visible) be= come > >> unbearable. Here is the results of cpu profiling: > >>=20 > >> - command-execute = 776 62% > >> - call-interactively 7= 76 62% > >> - funcall-interactively 67= 5 54% > >> - previous-line 476= 38% > >> - line-move 476 = 38% > >> - line-move-1 476 = 38% > >> + vertical-motion 225 1= 8% >=20 > Eli> Does it help to set inhibit-compacting-font-caches non-nil? >=20 > >> As I remember I did not experienced something similar in Emacs 26/= 27 >=20 > Eli> I don't think Emacs < 27 supported variation selectors, did it? >=20 > It=CA=BCs coming from the caching in ftcrfont_glyph_extents: >=20 > row =3D glyph / METRICS_NCOLS_PER_ROW; <=3D=3D glyph =3D=3D 0xFFFFFFFF,= row -> 0x1FFFFFF > col =3D glyph % METRICS_NCOLS_PER_ROW; > if (row >=3D ftcrfont_info->metrics_nrows) > { > ftcrfont_info->metrics =3D > xrealloc (ftcrfont_info->metrics, > sizeof (struct font_metrics *) * (row + 1)); > memset (ftcrfont_info->metrics + ftcrfont_info->metrics_nrows, 0, > (sizeof (struct font_metrics *) > * (row + 1 - ftcrfont_info->metrics_nrows))); > ftcrfont_info->metrics_nrows =3D row + 1; <=3D=3D=3D we=CA=BCre upd= ating > metrics_nrows, lets look in ftfont.h > } >=20 > ftfont.h: >=20 > #ifdef USE_CAIRO > cairo_scaled_font_t *cr_scaled_font; > /* Scale factor from the bitmap strike metrics in 1/64 pixels, used > as the hb_position_t value in HarfBuzz, to those in (scaled) > pixels. The value is 0 for scalable fonts. */ > double bitmap_position_unit; > /* Font metrics cache. */ > struct font_metrics **metrics; > short metrics_nrows; > ^^^^^ oops! Now we end up calling xrealloc every time we enter > ftctfont_glyph_extents for that glyph. >=20 > Of course, I don=CA=BCt think glyph should be 0xFFFFFFFF, but that=CA=BCs= a > different problem. >=20 > Robert 0xFFFFFFFF comes from FONT_INVALID_CODE. font->driver->text_extents shouldn't be called if font->font->driver->encode_char returns it. diff --git a/src/font.c b/src/font.c index 2b90903c90..03e6176220 100644 --- a/src/font.c +++ b/src/font.c @@ -4420,15 +4420,19 @@ font_fill_lglyph_metrics (Lisp_Object glyph, Lisp_O= bject font_object) { struct font *font =3D XFONT_OBJECT (font_object); unsigned code =3D font->driver->encode_char (font, LGLYPH_CHAR (glyph)); - struct font_metrics metrics; - - LGLYPH_SET_CODE (glyph, code); - font->driver->text_extents (font, &code, 1, &metrics); - LGLYPH_SET_LBEARING (glyph, metrics.lbearing); - LGLYPH_SET_RBEARING (glyph, metrics.rbearing); - LGLYPH_SET_WIDTH (glyph, metrics.width); - LGLYPH_SET_ASCENT (glyph, metrics.ascent); - LGLYPH_SET_DESCENT (glyph, metrics.descent); + + if (code !=3D FONT_INVALID_CODE) + { + struct font_metrics metrics; + + LGLYPH_SET_CODE (glyph, code); + font->driver->text_extents (font, &code, 1, &metrics); + LGLYPH_SET_LBEARING (glyph, metrics.lbearing); + LGLYPH_SET_RBEARING (glyph, metrics.rbearing); + LGLYPH_SET_WIDTH (glyph, metrics.width); + LGLYPH_SET_ASCENT (glyph, metrics.ascent); + LGLYPH_SET_DESCENT (glyph, metrics.descent); + } } =20 =20 But I'm not sure if it is ok to leave the code and metrics-related fields nil when encode_char returns FONT_INVALID_CODE. Handa-san? YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 15 03:26:02 2020 Received: (at 39133) by debbugs.gnu.org; 15 Jan 2020 08:26:02 +0000 Received: from localhost ([127.0.0.1]:34242 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irdzx-0001zm-GQ for submit@debbugs.gnu.org; Wed, 15 Jan 2020 03:26:02 -0500 Received: from mail-wm1-f53.google.com ([209.85.128.53]:40919) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irdzr-0001zR-Rg for 39133@debbugs.gnu.org; Wed, 15 Jan 2020 03:25:56 -0500 Received: by mail-wm1-f53.google.com with SMTP id t14so16750814wmi.5 for <39133@debbugs.gnu.org>; Wed, 15 Jan 2020 00:25:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:message-id:mime-version :content-transfer-encoding; bh=CjcGgCoYhDWKc1GQ6nNS3oK9wP4g6HuVYSycC2wpx5s=; b=mZd76WI9tMOPqrtWJwXyiYuqOfJmgBkuAM4x6IvX36g+EijPjB+mtpltQINIp0dg2N 1M9t6uEL+FURz8kWMIBvfYcQ2DVqjl3X3Bw4j1yax1+kgFTY77x/iJzThUURoVz9iPtS QmXXG7lL9z6uBZ0se2wz4koy8zSPhZBYrdkmu71u3TWu+6d4IIrLCs5cgGW+R3j8PhqS WkK9j8FSWF63QK7LLI4sIW7rPwzDewRPchkgfuDDm0ICqVAILMZ/zZ7W3AAsae4CdShN /1yPlhVjH3+cvJnmG/uGhwss4O/BSqK+O1z2fuIePpdLh7/0Zy04xHU0B1LqPZBYi536 rmig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:message-id :mime-version:content-transfer-encoding; bh=CjcGgCoYhDWKc1GQ6nNS3oK9wP4g6HuVYSycC2wpx5s=; b=cSGCMzOrAYiC3ZS9e5j29Ig0RYkl4RXgclRLtgQBacjMMvLbapBGCqfI7xtc+3u/Tq KAlzYnBllmgGZStpcbxjNgWa9Baa8iBMncRy99Chx3tNE3gMFueV5Jb0w3tGPdwCSsDv dxjRdKCzQCuK4bGsYVzOEP1iZR/HDbQTNuOq4arEisfGx9gtH5auAzTNz3QrtU4yHTL8 bYN5v3gbGgBfZQB6oa8zrBldF8Xbkcl0DoDJuazeP+XeZiNSDqXifQ8g7EZARQDfoi3p nWBesTah0fnBACIFytCmvRQDVoZZw5ai6qtieRrwHvmQb7W9hMn7mNPEnOFFpMZP4OBX W5TQ== X-Gm-Message-State: APjAAAXaGcVNqS+cQksbiT6/sc0gNBoKpg+AqPyiPDzpf19KMfyQWrtz cBihubv59s59c6yhlkUdCbk= X-Google-Smtp-Source: APXvYqwOs3Dm7xVF+ZlMoqYx9X8wNVpMZmnMwcgAa8/GQLXcS7zsHNsisfp4ZRyRaJz9qwYA74geVQ== X-Received: by 2002:a05:600c:20e:: with SMTP id 14mr24440859wmi.104.1579076745821; Wed, 15 Jan 2020 00:25:45 -0800 (PST) Received: from rpluim-mac ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id n189sm22877703wme.33.2020.01.15.00.25.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jan 2020 00:25:45 -0800 (PST) From: Robert Pluim To: YAMAMOTO Mitsuharu Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> Date: Wed, 15 Jan 2020 09:25:43 +0100 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 39133 Cc: 39133@debbugs.gnu.org, Eli Zaretskii , Evgeny Zajcev , handa@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Wed, 15 Jan 2020 13:26:11 +0900, YAMAMOTO Mitsuharu said: YAMAMOTO> 0xFFFFFFFF comes from FONT_INVALID_CODE. font->driver->text_e= xtents YAMAMOTO> shouldn't be called if font->font->driver->encode_char return= s it. YAMAMOTO> diff --git a/src/font.c b/src/font.c YAMAMOTO> index 2b90903c90..03e6176220 100644 YAMAMOTO> --- a/src/font.c YAMAMOTO> +++ b/src/font.c YAMAMOTO> @@ -4420,15 +4420,19 @@ font_fill_lglyph_metrics (Lisp_Object= glyph, Lisp_Object font_object) YAMAMOTO> { YAMAMOTO> struct font *font =3D XFONT_OBJECT (font_object); YAMAMOTO> unsigned code =3D font->driver->encode_char (font, LGLYPH_= CHAR (glyph)); YAMAMOTO> - struct font_metrics metrics; YAMAMOTO> - YAMAMOTO> - LGLYPH_SET_CODE (glyph, code); YAMAMOTO> - font->driver->text_extents (font, &code, 1, &metrics); YAMAMOTO> - LGLYPH_SET_LBEARING (glyph, metrics.lbearing); YAMAMOTO> - LGLYPH_SET_RBEARING (glyph, metrics.rbearing); YAMAMOTO> - LGLYPH_SET_WIDTH (glyph, metrics.width); YAMAMOTO> - LGLYPH_SET_ASCENT (glyph, metrics.ascent); YAMAMOTO> - LGLYPH_SET_DESCENT (glyph, metrics.descent); YAMAMOTO> + YAMAMOTO> + if (code !=3D FONT_INVALID_CODE) YAMAMOTO> + { YAMAMOTO> + struct font_metrics metrics; YAMAMOTO> + YAMAMOTO> + LGLYPH_SET_CODE (glyph, code); YAMAMOTO> + font->driver->text_extents (font, &code, 1, &metrics); YAMAMOTO> + LGLYPH_SET_LBEARING (glyph, metrics.lbearing); YAMAMOTO> + LGLYPH_SET_RBEARING (glyph, metrics.rbearing); YAMAMOTO> + LGLYPH_SET_WIDTH (glyph, metrics.width); YAMAMOTO> + LGLYPH_SET_ASCENT (glyph, metrics.ascent); YAMAMOTO> + LGLYPH_SET_DESCENT (glyph, metrics.descent); YAMAMOTO> + } YAMAMOTO> } =20 =20 YAMAMOTO> But I'm not sure if it is ok to leave the code and metrics-re= lated YAMAMOTO> fields nil when encode_char returns FONT_INVALID_CODE. Handa= -san? I don=CA=BCt know either, but your patch fixes the slowdown and I=CA=BCve s= een no negative effects yet. Robert From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 15 05:48:12 2020 Received: (at 39133) by debbugs.gnu.org; 15 Jan 2020 10:48:12 +0000 Received: from localhost ([127.0.0.1]:34302 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irgDY-0002up-RR for submit@debbugs.gnu.org; Wed, 15 Jan 2020 05:48:12 -0500 Received: from mail-lf1-f45.google.com ([209.85.167.45]:36891) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irgDS-0002u4-Lk for 39133@debbugs.gnu.org; Wed, 15 Jan 2020 05:48:06 -0500 Received: by mail-lf1-f45.google.com with SMTP id b15so12326925lfc.4 for <39133@debbugs.gnu.org>; Wed, 15 Jan 2020 02:48:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=KHIrum8UYIZHije9xKDhi8QeT0sE0KqLXvNDZNdYHZ4=; b=T0e9kj8sVw//Swis/LSAhjoZjh3z1FPDx+kdB9c96khY4iDT+y69yQm6XXDaW2vGUw 68oAXOHsqyTdZlUf/P10Nw4Ig+Grd6q2mHOTiacYPfJ0rqtaUlmrQT5rflibodQdWsJz XHQSs6W5j9k78EXHJS4amLyY65xRlEQoH7eGOY4gSJR72cvGO0b5jtrAExzP76cZU4tv TP9dewgFIikzlRVDFBUUKNxSQUIvUsKQtPdecEbvI88bG+SlqBjpEqyNufNTgUQSiDHZ ADPNzMgn1/YyHUIF+M70aM1aztVueZ3/uuEe1HsDLDlznOSLqQhG/D7IcV14hOEOnNBU 92kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=KHIrum8UYIZHije9xKDhi8QeT0sE0KqLXvNDZNdYHZ4=; b=cJ4ahAcHHCxGnsF4icrsWbsbUrX2Yyve05uaAX0kasZ6SPAZ2TAxyr6LsfYsuf4Nhb 0XJb2FTFm9P3ugIXJR+Ioo+hlPrb0+ZyXEdwu7SarVl3W0CnpTPPsrIQut22JbdzYRbi lpSa+ZTl1vO2Y9QrEi25gq2Nvw44SwNh75KAJPFX4fiu7U4TJC47RnbdZEajhZszt7Rp SurX+5VMsvhTRw7StoQMsh4Mwc/1/gFNNLwI6WdkR0WFwT9BVF2MO+3xNjLv1qdn1xNx HQVMyugMzty/wgJvAHpk0ToSPvvQFcKK5PqPev2KBSjtXV3sGExE1k4/bhaw+F8Hg4zL hpYA== X-Gm-Message-State: APjAAAUSBnlDUKZdj128UkCVwkdScBITSDMpCzPCPHjmD1/4Tfydcf3j TY782D/QRbIQFz2EpaaIA9Fh6yUr+plmoHXVFqI= X-Google-Smtp-Source: APXvYqwNj2lNR8zkPP5TVPxY/VATfIT/aJe3quSYOm4zQswBRn0+u5KzYy1RDfjjdgLE7Q0aw/ZzSkZkvOwKf+EbbDU= X-Received: by 2002:ac2:5b41:: with SMTP id i1mr4361174lfp.82.1579085276592; Wed, 15 Jan 2020 02:47:56 -0800 (PST) MIME-Version: 1.0 References: <83lfqa5aa2.fsf@gnu.org> In-Reply-To: From: Evgeny Zajcev Date: Wed, 15 Jan 2020 13:47:45 +0300 Message-ID: Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char To: Robert Pluim Content-Type: multipart/alternative; boundary="000000000000fb3db2059c2b7043" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 39133 Cc: handa@gnu.org, Eli Zaretskii , 39133@debbugs.gnu.org, YAMAMOTO Mitsuharu X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000fb3db2059c2b7043 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable =D1=81=D1=80, 15 =D1=8F=D0=BD=D0=B2. 2020 =D0=B3. =D0=B2 11:25, Robert Plui= m : > >>>>> On Wed, 15 Jan 2020 13:26:11 +0900, YAMAMOTO Mitsuharu < > mituharu@math.s.chiba-u.ac.jp> said: > > YAMAMOTO> 0xFFFFFFFF comes from FONT_INVALID_CODE. > font->driver->text_extents > YAMAMOTO> shouldn't be called if font->font->driver->encode_char > returns it. > > YAMAMOTO> diff --git a/src/font.c b/src/font.c > YAMAMOTO> index 2b90903c90..03e6176220 100644 > YAMAMOTO> --- a/src/font.c > YAMAMOTO> +++ b/src/font.c > YAMAMOTO> @@ -4420,15 +4420,19 @@ font_fill_lglyph_metrics > (Lisp_Object glyph, Lisp_Object font_object) > YAMAMOTO> { > YAMAMOTO> struct font *font =3D XFONT_OBJECT (font_object); > YAMAMOTO> unsigned code =3D font->driver->encode_char (font, > LGLYPH_CHAR (glyph)); > YAMAMOTO> - struct font_metrics metrics; > YAMAMOTO> - > YAMAMOTO> - LGLYPH_SET_CODE (glyph, code); > YAMAMOTO> - font->driver->text_extents (font, &code, 1, &metrics); > YAMAMOTO> - LGLYPH_SET_LBEARING (glyph, metrics.lbearing); > YAMAMOTO> - LGLYPH_SET_RBEARING (glyph, metrics.rbearing); > YAMAMOTO> - LGLYPH_SET_WIDTH (glyph, metrics.width); > YAMAMOTO> - LGLYPH_SET_ASCENT (glyph, metrics.ascent); > YAMAMOTO> - LGLYPH_SET_DESCENT (glyph, metrics.descent); > YAMAMOTO> + > YAMAMOTO> + if (code !=3D FONT_INVALID_CODE) > YAMAMOTO> + { > YAMAMOTO> + struct font_metrics metrics; > YAMAMOTO> + > YAMAMOTO> + LGLYPH_SET_CODE (glyph, code); > YAMAMOTO> + font->driver->text_extents (font, &code, 1, &metrics= ); > YAMAMOTO> + LGLYPH_SET_LBEARING (glyph, metrics.lbearing); > YAMAMOTO> + LGLYPH_SET_RBEARING (glyph, metrics.rbearing); > YAMAMOTO> + LGLYPH_SET_WIDTH (glyph, metrics.width); > YAMAMOTO> + LGLYPH_SET_ASCENT (glyph, metrics.ascent); > YAMAMOTO> + LGLYPH_SET_DESCENT (glyph, metrics.descent); > YAMAMOTO> + } > YAMAMOTO> } > > > YAMAMOTO> But I'm not sure if it is ok to leave the code and > metrics-related > YAMAMOTO> fields nil when encode_char returns FONT_INVALID_CODE. > Handa-san? > > I don=CA=BCt know either, but your patch fixes the slowdown and I=CA=BCve= seen > no negative effects yet. > Yeah, this patch fixes the slowdown! --=20 lg --000000000000fb3db2059c2b7043 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


=
=D1=81=D1=80, 15 =D1=8F=D0=BD=D0=B2. = 2020 =D0=B3. =D0=B2 11:25, Robert Pluim <rpluim@gmail.com>:
>>>>> On Wed, 15 Jan 2020 13:26:11 +0900, YAM= AMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> said:

=C2=A0 =C2=A0 YAMAMOTO> 0xFFFFFFFF comes from FONT_INVALID_CODE. font-&g= t;driver->text_extents
=C2=A0 =C2=A0 YAMAMOTO> shouldn't be called if font->font->dri= ver->encode_char returns it.

=C2=A0 =C2=A0 YAMAMOTO> diff --git a/src/font.c b/src/font.c
=C2=A0 =C2=A0 YAMAMOTO> index 2b90903c90..03e6176220 100644
=C2=A0 =C2=A0 YAMAMOTO> --- a/src/font.c
=C2=A0 =C2=A0 YAMAMOTO> +++ b/src/font.c
=C2=A0 =C2=A0 YAMAMOTO> @@ -4420,15 +4420,19 @@ font_fill_lglyph_metrics= (Lisp_Object glyph, Lisp_Object font_object)
=C2=A0 =C2=A0 YAMAMOTO>=C2=A0 {
=C2=A0 =C2=A0 YAMAMOTO>=C2=A0 =C2=A0 struct font *font =3D XFONT_OBJECT = (font_object);
=C2=A0 =C2=A0 YAMAMOTO>=C2=A0 =C2=A0 unsigned code =3D font->driver-&= gt;encode_char (font, LGLYPH_CHAR (glyph));
=C2=A0 =C2=A0 YAMAMOTO> -=C2=A0 struct font_metrics metrics;
=C2=A0 =C2=A0 YAMAMOTO> -
=C2=A0 =C2=A0 YAMAMOTO> -=C2=A0 LGLYPH_SET_CODE (glyph, code);
=C2=A0 =C2=A0 YAMAMOTO> -=C2=A0 font->driver->text_extents (font, = &code, 1, &metrics);
=C2=A0 =C2=A0 YAMAMOTO> -=C2=A0 LGLYPH_SET_LBEARING (glyph, metrics.lbea= ring);
=C2=A0 =C2=A0 YAMAMOTO> -=C2=A0 LGLYPH_SET_RBEARING (glyph, metrics.rbea= ring);
=C2=A0 =C2=A0 YAMAMOTO> -=C2=A0 LGLYPH_SET_WIDTH (glyph, metrics.width);=
=C2=A0 =C2=A0 YAMAMOTO> -=C2=A0 LGLYPH_SET_ASCENT (glyph, metrics.ascent= );
=C2=A0 =C2=A0 YAMAMOTO> -=C2=A0 LGLYPH_SET_DESCENT (glyph, metrics.desce= nt);
=C2=A0 =C2=A0 YAMAMOTO> +
=C2=A0 =C2=A0 YAMAMOTO> +=C2=A0 if (code !=3D FONT_INVALID_CODE)
=C2=A0 =C2=A0 YAMAMOTO> +=C2=A0 =C2=A0 {
=C2=A0 =C2=A0 YAMAMOTO> +=C2=A0 =C2=A0 =C2=A0 struct font_metrics metric= s;
=C2=A0 =C2=A0 YAMAMOTO> +
=C2=A0 =C2=A0 YAMAMOTO> +=C2=A0 =C2=A0 =C2=A0 LGLYPH_SET_CODE (glyph, co= de);
=C2=A0 =C2=A0 YAMAMOTO> +=C2=A0 =C2=A0 =C2=A0 font->driver->text_e= xtents (font, &code, 1, &metrics);
=C2=A0 =C2=A0 YAMAMOTO> +=C2=A0 =C2=A0 =C2=A0 LGLYPH_SET_LBEARING (glyph= , metrics.lbearing);
=C2=A0 =C2=A0 YAMAMOTO> +=C2=A0 =C2=A0 =C2=A0 LGLYPH_SET_RBEARING (glyph= , metrics.rbearing);
=C2=A0 =C2=A0 YAMAMOTO> +=C2=A0 =C2=A0 =C2=A0 LGLYPH_SET_WIDTH (glyph, m= etrics.width);
=C2=A0 =C2=A0 YAMAMOTO> +=C2=A0 =C2=A0 =C2=A0 LGLYPH_SET_ASCENT (glyph, = metrics.ascent);
=C2=A0 =C2=A0 YAMAMOTO> +=C2=A0 =C2=A0 =C2=A0 LGLYPH_SET_DESCENT (glyph,= metrics.descent);
=C2=A0 =C2=A0 YAMAMOTO> +=C2=A0 =C2=A0 }
=C2=A0 =C2=A0 YAMAMOTO>=C2=A0 }


=C2=A0 =C2=A0 YAMAMOTO> But I'm not sure if it is ok to leave the co= de and metrics-related
=C2=A0 =C2=A0 YAMAMOTO> fields nil when encode_char returns FONT_INVALID= _CODE.=C2=A0 Handa-san?

I don=CA=BCt know either, but your patch fixes the slowdown and I=CA=BCve s= een
no negative effects yet.

Yeah, this pat= ch fixes the slowdown!

--
lg
--000000000000fb3db2059c2b7043-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 15 11:19:23 2020 Received: (at 39133) by debbugs.gnu.org; 15 Jan 2020 16:19:23 +0000 Received: from localhost ([127.0.0.1]:35421 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irlO6-0007b8-Ty for submit@debbugs.gnu.org; Wed, 15 Jan 2020 11:19:23 -0500 Received: from eggs.gnu.org ([209.51.188.92]:52837) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1irlO4-0007au-Ro for 39133@debbugs.gnu.org; Wed, 15 Jan 2020 11:19:21 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:39268) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1irlNy-0006Z7-Nn; Wed, 15 Jan 2020 11:19:14 -0500 Received: from [176.228.60.248] (port=3279 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1irlNx-00023Z-Ur; Wed, 15 Jan 2020 11:19:14 -0500 Date: Wed, 15 Jan 2020 18:19:28 +0200 Message-Id: <83r2004rqn.fsf@gnu.org> From: Eli Zaretskii To: YAMAMOTO Mitsuharu In-reply-to: (message from YAMAMOTO Mitsuharu on Wed, 15 Jan 2020 13:26:11 +0900) Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 39133 Cc: 39133@debbugs.gnu.org, rpluim@gmail.com, lg.zevlg@gmail.com, handa@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Wed, 15 Jan 2020 13:26:11 +0900 > From: YAMAMOTO Mitsuharu > Cc: Eli Zaretskii , > Evgeny Zajcev , > 39133@debbugs.gnu.org, handa@gnu.org > > + if (code != FONT_INVALID_CODE) > + { > + struct font_metrics metrics; > + > + LGLYPH_SET_CODE (glyph, code); > + font->driver->text_extents (font, &code, 1, &metrics); > + LGLYPH_SET_LBEARING (glyph, metrics.lbearing); > + LGLYPH_SET_RBEARING (glyph, metrics.rbearing); > + LGLYPH_SET_WIDTH (glyph, metrics.width); > + LGLYPH_SET_ASCENT (glyph, metrics.ascent); > + LGLYPH_SET_DESCENT (glyph, metrics.descent); > + } > } > > > But I'm not sure if it is ok to leave the code and metrics-related > fields nil when encode_char returns FONT_INVALID_CODE. Handa-san? We could do in the 'else' branch the same we do in the single caller of this function, fill_gstring_body, when we don't call font_fill_lglyph_metrics: if (FONT_OBJECT_P (font_object)) { font_fill_lglyph_metrics (g, font_object); } else { int width = XFIXNAT (CHAR_TABLE_REF (Vchar_width_table, c)); LGLYPH_SET_CODE (g, c); LGLYPH_SET_LBEARING (g, 0); LGLYPH_SET_RBEARING (g, width); LGLYPH_SET_WIDTH (g, width); LGLYPH_SET_ASCENT (g, 1); LGLYPH_SET_DESCENT (g, 0); } From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 24 05:14:03 2020 Received: (at 39133) by debbugs.gnu.org; 24 Jan 2020 10:14:04 +0000 Received: from localhost ([127.0.0.1]:53493 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iuvyV-0002rO-Lp for submit@debbugs.gnu.org; Fri, 24 Jan 2020 05:14:03 -0500 Received: from mail-wr1-f45.google.com ([209.85.221.45]:39655) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iuvyT-0002ql-Pj for 39133@debbugs.gnu.org; Fri, 24 Jan 2020 05:14:02 -0500 Received: by mail-wr1-f45.google.com with SMTP id y11so1277200wrt.6 for <39133@debbugs.gnu.org>; Fri, 24 Jan 2020 02:14:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:message-id:mime-version; bh=7qUoo+cz+mtqvQfhoiqCO5XJddBTrgxwZlm8wQ92ltg=; b=lPs3SJencP65QRzCvBGeTLSgnBRR6ietYyIOWeuU6LNH5NHH+gg3N/JGHmyR+ynEWE mz9hgtjwY2spvO4VSHMN8Vg/uH+i7DUoliXgGb76BdzmXP7mo/S2ySK84zqOseuRCmht 3P9k0uq/Gji1AtClUnl6c+KPmXCbKZLTdGeySPfs7uYCZOMIEJdu5X1t5txdiTPrP8yl zZ3w8JaGHFXgT9kH5DhVnw87MJ+3Hw93ykQnryIa7NUsYpQalAq8RjLfxX2C/0CEN15Q CJwJotMaWKLYT2zir4udAWYhnvV3Zn6pTGOwoH5vXUT3AT9kT3huNTbtRkbWoOjAv5sL psvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:message-id :mime-version; bh=7qUoo+cz+mtqvQfhoiqCO5XJddBTrgxwZlm8wQ92ltg=; b=Vl7jjbLs3gVpJLNw4QHMjIWyzmevFtk5ROMUs/AScBxcP8pKcCAKBspwwrlCIswgvL ZlDr+iaE5tOkjLujr2uyhDeRzONvUNrGKsEbmvxLajNv7Cn7zcGDfY0XbtZcx/QVP43p 8aZqVEVtFehVk5HFyJHL34JWp8gRX8RSZEB41GLbCCCt1CZW7u5UbE7wPUIpx8TKPeHk E4PKwh8Ccj3odG6BFcDJl6zOA4VdpYfQljuRzn8BPRN1krZPu/AGOD7l80GUs/HkOGwD 5YO4yjmwbarK07zOCAZ7AYUq8+1fMEwdxpWKBeWXmMZNCwjGXefMzV4ezrNJF6dXQB4O y2rA== X-Gm-Message-State: APjAAAVOAe+lQ9c0tb/y3xGJndyZy5FvB6taYGRsC2QBwqARuV+6JMP2 GQgFYnSfLwWQKRAtUwhoBzE= X-Google-Smtp-Source: APXvYqywQaZe03roxY/A1YRip0t7Gtw7zQ+oot/j4LNx/igYlJLrmS2kFmABoOg8nzoAkXPUPrc/FQ== X-Received: by 2002:adf:f54d:: with SMTP id j13mr3395105wrp.19.1579860835951; Fri, 24 Jan 2020 02:13:55 -0800 (PST) Received: from rpluim-mac ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id r6sm6675997wrq.92.2020.01.24.02.13.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2020 02:13:55 -0800 (PST) From: Robert Pluim To: Eli Zaretskii Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> <83r2004rqn.fsf@gnu.org> Date: Fri, 24 Jan 2020 11:13:54 +0100 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 39133 Cc: lg.zevlg@gmail.com, 39133@debbugs.gnu.org, YAMAMOTO Mitsuharu , handa@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Wed, 15 Jan 2020 18:19:28 +0200, Eli Zaretskii said: Eli> We could do in the 'else' branch the same we do in the single caller Eli> of this function, fill_gstring_body, when we don't call Eli> font_fill_lglyph_metrics: Rather than duplicate that code, I moved the FONT_INVALID_CODE check up. This works for me: diff --git a/src/composite.c b/src/composite.c index 53e6930b5f..bf5884fa55 100644 --- a/src/composite.c +++ b/src/composite.c @@ -818,6 +818,7 @@ fill_gstring_body (Lisp_Object gstring) Lisp_Object header = AREF (gstring, 0); ptrdiff_t len = LGSTRING_CHAR_LEN (gstring); ptrdiff_t i; + struct font *font = XFONT_OBJECT (font_object); for (i = 0; i < len; i++) { @@ -832,9 +833,12 @@ fill_gstring_body (Lisp_Object gstring) LGLYPH_SET_FROM (g, i); LGLYPH_SET_TO (g, i); LGLYPH_SET_CHAR (g, c); - if (FONT_OBJECT_P (font_object)) + + unsigned int code = font->driver->encode_char (font, LGLYPH_CHAR (g)); + + if (FONT_OBJECT_P (font_object) && code != FONT_INVALID_CODE) { - font_fill_lglyph_metrics (g, font_object); + font_fill_lglyph_metrics (g, font_object, code); } else { diff --git a/src/font.c b/src/font.c index bb39aef92d..03d9cc50ae 100644 --- a/src/font.c +++ b/src/font.c @@ -4416,10 +4416,9 @@ DEFUN ("clear-font-cache", Fclear_font_cache, Sclear_font_cache, 0, 0, 0, void -font_fill_lglyph_metrics (Lisp_Object glyph, Lisp_Object font_object) +font_fill_lglyph_metrics (Lisp_Object glyph, Lisp_Object font_object, unsigned int code) { struct font *font = XFONT_OBJECT (font_object); - unsigned code = font->driver->encode_char (font, LGLYPH_CHAR (glyph)); struct font_metrics metrics; LGLYPH_SET_CODE (glyph, code); diff --git a/src/font.h b/src/font.h index 0561e3c83f..d82039eed8 100644 --- a/src/font.h +++ b/src/font.h @@ -886,7 +886,7 @@ valid_font_driver (struct font_driver const *d) extern Lisp_Object font_range (ptrdiff_t, ptrdiff_t, ptrdiff_t *, struct window *, struct face *, Lisp_Object); -extern void font_fill_lglyph_metrics (Lisp_Object, Lisp_Object); +extern void font_fill_lglyph_metrics (Lisp_Object, Lisp_Object, unsigned int); extern Lisp_Object font_put_extra (Lisp_Object font, Lisp_Object prop, Lisp_Object val); From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 24 05:23:04 2020 Received: (at 39133) by debbugs.gnu.org; 24 Jan 2020 10:23:05 +0000 Received: from localhost ([127.0.0.1]:53497 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iuw7E-00034p-Ke for submit@debbugs.gnu.org; Fri, 24 Jan 2020 05:23:04 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34127) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iuw7C-000349-GL for 39133@debbugs.gnu.org; Fri, 24 Jan 2020 05:23:03 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48112) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iuw76-0002n2-Vk; Fri, 24 Jan 2020 05:22:57 -0500 Received: from [176.228.60.248] (port=3112 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iuw76-0002bb-Fh; Fri, 24 Jan 2020 05:22:56 -0500 Date: Fri, 24 Jan 2020 12:22:38 +0200 Message-Id: <8336c5rw5t.fsf@gnu.org> From: Eli Zaretskii To: Robert Pluim In-reply-to: (message from Robert Pluim on Fri, 24 Jan 2020 11:13:54 +0100) Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> <83r2004rqn.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 39133 Cc: lg.zevlg@gmail.com, 39133@debbugs.gnu.org, mituharu@math.s.chiba-u.ac.jp, handa@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Robert Pluim > Cc: YAMAMOTO Mitsuharu , > 39133@debbugs.gnu.org, lg.zevlg@gmail.com, handa@gnu.org > Date: Fri, 24 Jan 2020 11:13:54 +0100 > > >>>>> On Wed, 15 Jan 2020 18:19:28 +0200, Eli Zaretskii said: > Eli> We could do in the 'else' branch the same we do in the single caller > Eli> of this function, fill_gstring_body, when we don't call > Eli> font_fill_lglyph_metrics: > > Rather than duplicate that code, I moved the FONT_INVALID_CODE check > up. This works for me: Looks reasonable, thanks. From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 24 08:09:31 2020 Received: (at 39133) by debbugs.gnu.org; 24 Jan 2020 13:09:32 +0000 Received: from localhost ([127.0.0.1]:53537 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iuyiJ-0000Wi-Os for submit@debbugs.gnu.org; Fri, 24 Jan 2020 08:09:31 -0500 Received: from mail-wr1-f43.google.com ([209.85.221.43]:34671) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iuyiI-0000WP-1E for 39133@debbugs.gnu.org; Fri, 24 Jan 2020 08:09:30 -0500 Received: by mail-wr1-f43.google.com with SMTP id t2so1922512wrr.1 for <39133@debbugs.gnu.org>; Fri, 24 Jan 2020 05:09:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :mime-version; bh=93ytGBeGYqqK4C0GmR2twGA2fmjC/ilyJcR/m8SEVSM=; b=nm7Xu18ITH7cDEAJBvSZ81qm3mfIOK+USwoHFZoe6eKHJcFwATJhZhlWgaL0JteqFB x5wu3geAR2ahhvSWFCCgbWJS0V0H1s/+6RD/PasKgiYRLxDzIeAlJuqFkzlbW5B7HJFo ROpLItEarU/0BYfCxdsLowbnyhVlMgh2KDR6qLgoj/W9rjPRY9s8vq8gUtO2U8+SzNvd JxhW3pWC5iKt2PuJXt+aCvNAdOzFVILCx6Oz7un/NDpS//n1Ih0sugnCepmQKt9pTltL vJffTQSpiKERdQp6jwvNAvMxAhdER3BB7v41AZGkBUratEPIvV5ItcOhBeqrtFIYDwZy fqTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:mime-version; bh=93ytGBeGYqqK4C0GmR2twGA2fmjC/ilyJcR/m8SEVSM=; b=DS55mSHbpGSeCc/C+kqaWFJvYF5DY/oqnf+8OcCx42pJ+ENrE/UpOsVdhmBT2wDLmR uInEhkgCZyjg7uuTZQ2uFgIVbrcy6+OtmuqCHiw2Yd28Cr2MtNaB1ux0zmQw2Kh5bAVH hmOn/7ONcD/Tlj+H26aO7cxOXXehDrpPXDJIxJrhVShMRkx7XQo6GcYh7CHpYHwW5U6K 9P84yvFHUXoMrXHzDIRbUiIoEPUPWNnBlMGqX4/chYGIkx5AGC8FrDfeTw0wyFt4pJDd KBTapXVBxBLDgkAjQQC2NjU5AcxtzeehaHRrY1/PYLza3gTEPakZKfHHcMDLxmX93DBb JEmg== X-Gm-Message-State: APjAAAW4tZEKtsJuI6ooOGLwWIiLwahMhTUpv3DjnlFZ+jOHVAOYLKKZ FZYmnzblfxHmBNPnnRgEm2I= X-Google-Smtp-Source: APXvYqzanjJ/Dn8X0KMugiCAZkmoNJKLwXYH6ZPbNCgwOlPghhYitz1UDojztXPULFFc6zCqaIYlBw== X-Received: by 2002:a5d:4d06:: with SMTP id z6mr4288580wrt.339.1579871364080; Fri, 24 Jan 2020 05:09:24 -0800 (PST) Received: from rpluim-mac ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id y7sm12944584wmd.1.2020.01.24.05.09.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2020 05:09:23 -0800 (PST) From: Robert Pluim To: Eli Zaretskii Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> <83r2004rqn.fsf@gnu.org> <8336c5rw5t.fsf@gnu.org> Date: Fri, 24 Jan 2020 14:09:22 +0100 In-Reply-To: <8336c5rw5t.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 24 Jan 2020 12:22:38 +0200") Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 39133 Cc: 39133@debbugs.gnu.org, lg.zevlg@gmail.com, mituharu@math.s.chiba-u.ac.jp, handa@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Fri, 24 Jan 2020 12:22:38 +0200, Eli Zaretskii said: >> From: Robert Pluim >> Cc: YAMAMOTO Mitsuharu , >> 39133@debbugs.gnu.org, lg.zevlg@gmail.com, handa@gnu.org >> Date: Fri, 24 Jan 2020 11:13:54 +0100 >> >> >>>>> On Wed, 15 Jan 2020 18:19:28 +0200, Eli Zaretskii said: Eli> We could do in the 'else' branch the same we do in the single caller Eli> of this function, fill_gstring_body, when we don't call Eli> font_fill_lglyph_metrics: >> >> Rather than duplicate that code, I moved the FONT_INVALID_CODE check >> up. This works for me: Eli> Looks reasonable, thanks. Except it crashes under -nw. More investigation required. Robert From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 24 08:40:55 2020 Received: (at 39133) by debbugs.gnu.org; 24 Jan 2020 13:40:55 +0000 Received: from localhost ([127.0.0.1]:53553 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iuzCg-0001Fu-Rf for submit@debbugs.gnu.org; Fri, 24 Jan 2020 08:40:55 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55242) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iuzCf-0001Fh-3I for 39133@debbugs.gnu.org; Fri, 24 Jan 2020 08:40:53 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:60893) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iuzCY-0003GY-Vg; Fri, 24 Jan 2020 08:40:47 -0500 Received: from [176.228.60.248] (port=3154 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iuzCO-0001v0-9E; Fri, 24 Jan 2020 08:40:37 -0500 Date: Fri, 24 Jan 2020 15:40:19 +0200 Message-Id: <83y2txq8fw.fsf@gnu.org> From: Eli Zaretskii To: Robert Pluim In-reply-to: (message from Robert Pluim on Fri, 24 Jan 2020 14:09:22 +0100) Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> <83r2004rqn.fsf@gnu.org> <8336c5rw5t.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 39133 Cc: 39133@debbugs.gnu.org, lg.zevlg@gmail.com, mituharu@math.s.chiba-u.ac.jp, handa@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Robert Pluim > Cc: lg.zevlg@gmail.com, 39133@debbugs.gnu.org, > mituharu@math.s.chiba-u.ac.jp, handa@gnu.org > Date: Fri, 24 Jan 2020 14:09:22 +0100 > > >> Rather than duplicate that code, I moved the FONT_INVALID_CODE check > >> up. This works for me: > > Eli> Looks reasonable, thanks. > > Except it crashes under -nw. Yes, because the call to the font driver should only be done when 'font_object' is a font object (it isn't on TTY frames). Otherwise, simply assign FONT_INVALID_CODE to 'code'. From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 24 08:50:19 2020 Received: (at 39133) by debbugs.gnu.org; 24 Jan 2020 13:50:19 +0000 Received: from localhost ([127.0.0.1]:53565 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iuzLn-0001UW-8T for submit@debbugs.gnu.org; Fri, 24 Jan 2020 08:50:19 -0500 Received: from mail-wm1-f44.google.com ([209.85.128.44]:39024) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iuzLm-0001UK-0v for 39133@debbugs.gnu.org; Fri, 24 Jan 2020 08:50:18 -0500 Received: by mail-wm1-f44.google.com with SMTP id c84so891562wme.4 for <39133@debbugs.gnu.org>; Fri, 24 Jan 2020 05:50:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :mime-version; bh=KXuYTnG8K3XdmWRd0K/TEKFsqJd8VzdVKURg1M/wMOY=; b=UXMX/fLmG4DCxwP6A9zLKSTVE+p6N0cm56cDzVuIVIpLdYn7DVH9nRlTO3WuVXC3bG qz6e1E1N2Ly5br416g/x5IeIfzJy1rpzToLN/6yb/GmpV4RfmeKLfOwLPKLzplC9NOfX szSsfwABIG5d9adipkwAJlpSRO4kdgUq75tl25JWuRHKVbzK6tIvW9HHTo+xoarRP8ev qZe3Rji+QovNPNf2octyzIgfdFQB5moyQ7XbgFi4YeKDLvHf5+bLLfYugbcOifGtPWVF Nqw67ZepWwche7GMp4MX7sv/uX2WhZhQmwQ8njLA8tXfOgaztZmKqjhxbVHhtYoqrNKx KQhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:mime-version; bh=KXuYTnG8K3XdmWRd0K/TEKFsqJd8VzdVKURg1M/wMOY=; b=cvjh/RNgY9JPUaBDOo9ydxJQAdp8gHS7pBx64CMMSUmMcpweLgyNOB2i4kZRafuZ9F NSdpA/YF4wBfDLPSyqi2Vzr5qCDfrkrAsGLvC7Sihjgofe4Y0ujH6ApB5Ub7k55CfAs+ RAVqkwqwnd1uuO97xR7knbMnCdODWIfPVCp+GitIGJYSv+2QcCPjC7nsFC1WcgfTGwfg dwTasDdUhVclvAQIfXzRFqousTOP4BTzkqTX2QZg123rygUX3P0ZDfW0ARdcMPv9K4iG GWzh6xYSEOFxHEPP/93vMvjSk9A2+6oXta8k1mzNzFsqTlxFiC0KMvSqmBQoTfxi+LlH B/Lw== X-Gm-Message-State: APjAAAW4ehGJ5rns6ESfheEkL0RvyDSdt6SyZEh187c0VGxJnKrOcSxt +2IgR+EMFSQagGQANJfUVr4= X-Google-Smtp-Source: APXvYqzrjayWVVuThXafqJAZEOdClTd0wmPB8Pp2U1R1hc6DBFokkcOCXEQmEZ3SE5SodeyxxY6mDA== X-Received: by 2002:a7b:c183:: with SMTP id y3mr3295827wmi.45.1579873812092; Fri, 24 Jan 2020 05:50:12 -0800 (PST) Received: from rpluim-mac ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id n10sm7335390wrt.14.2020.01.24.05.50.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2020 05:50:11 -0800 (PST) From: Robert Pluim To: Eli Zaretskii Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> <83r2004rqn.fsf@gnu.org> <8336c5rw5t.fsf@gnu.org> <83y2txq8fw.fsf@gnu.org> Date: Fri, 24 Jan 2020 14:50:10 +0100 In-Reply-To: <83y2txq8fw.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 24 Jan 2020 15:40:19 +0200") Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 39133 Cc: 39133@debbugs.gnu.org, lg.zevlg@gmail.com, mituharu@math.s.chiba-u.ac.jp, handa@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Fri, 24 Jan 2020 15:40:19 +0200, Eli Zaretskii said: >> From: Robert Pluim >> Cc: lg.zevlg@gmail.com, 39133@debbugs.gnu.org, >> mituharu@math.s.chiba-u.ac.jp, handa@gnu.org >> Date: Fri, 24 Jan 2020 14:09:22 +0100 >> >> >> Rather than duplicate that code, I moved the FONT_INVALID_CODE check >> >> up. This works for me: >> Eli> Looks reasonable, thanks. >> >> Except it crashes under -nw. Eli> Yes, because the call to the font driver should only be done when Eli> 'font_object' is a font object (it isn't on TTY frames). Otherwise, Eli> simply assign FONT_INVALID_CODE to 'code'. Yes, I worked that out. A simple crash, for once :-) Robert From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 24 10:41:49 2020 Received: (at 39133) by debbugs.gnu.org; 24 Jan 2020 15:41:50 +0000 Received: from localhost ([127.0.0.1]:54653 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iv15h-0006Vp-L3 for submit@debbugs.gnu.org; Fri, 24 Jan 2020 10:41:49 -0500 Received: from mail-wr1-f44.google.com ([209.85.221.44]:39233) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iv15g-0006Vc-Fd for 39133@debbugs.gnu.org; Fri, 24 Jan 2020 10:41:48 -0500 Received: by mail-wr1-f44.google.com with SMTP id y11so2514223wrt.6 for <39133@debbugs.gnu.org>; Fri, 24 Jan 2020 07:41:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :mime-version; bh=MxRtJ5zkmV7F0mG5yJOHOZfAPdVKXFN4ExIr8PvBivg=; b=ACj0cFOGR9ci3P3tseMun2JhegRmUXZx4hxYN1/5PK1+D+pYzwMglPhoZfGthFN/me IJFcRANDowru7RRBgaVXLF+DBT8elgBHI2dTMYh8W9qYvqmVUzmkBd66NkUEB7OK/+nS FU639qGP8BxuIdWH9Ml/Ob/lVq6kpIPvNZxaeec5I/sF2j3QI2EoyB7IVR5kz39xbiMi Hoe01lldfE/z+SKEXzebOtSCOgoX7ITNT7bZfJkjDihSMnyW0RWS4U+hCXQL+NPCz/4s 6/W9MXUK/2UKaeisBEaJJMzNbM0xCiAseUceTE0yH7PRybIs7quEy+FwI97LeYJ+IFk4 iYgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:mime-version; bh=MxRtJ5zkmV7F0mG5yJOHOZfAPdVKXFN4ExIr8PvBivg=; b=XVohFwfuILq5c7l9z/LL70VIbdz6eHQ1jWZ3l6UGf9ZIstlIp56UDLv0TAvxqE67xA h/l5K/PofxEoBN3JjRcaSOBKk4HKSLwnq2qavJLDt2wKs2u2u/ADgEdIMvFpkF16huow 6F0JiKnxpCOxq9GZpT0MpExviYlaGje2ZLzw8TCq67Zg02ksxZEO1/e+43ipdmQImYyK ogRbhEdr498gGsEVnzcy04C2QJNqJqwAfMQftbBjyvj5kJu0FyV7pFjPGlfPM8JQa9a5 LAdM3LJTMNEGL2T6CTwtbheQFg8kw781iutI71vOzSz3vUZotvLeUDZov8JFUX+GVosf dMGQ== X-Gm-Message-State: APjAAAXIwjlLfRNpN4IfbUDi1JbNpxBL8ZOHrToVAZz2SCa8K5o4BqUc pO+deLNoJd+aKbZZf5RVFLM= X-Google-Smtp-Source: APXvYqw4Kbqfiub5zaEkRNVmIJLzxWC6R4Jj0LbIEPLt4QHg6MYN56F+GD8O7dBTHEf93IyUwUOKuw== X-Received: by 2002:adf:f103:: with SMTP id r3mr4905441wro.295.1579880502605; Fri, 24 Jan 2020 07:41:42 -0800 (PST) Received: from rpluim-mac ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id a9sm6966767wmm.15.2020.01.24.07.41.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2020 07:41:41 -0800 (PST) From: Robert Pluim To: Eli Zaretskii Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> <83r2004rqn.fsf@gnu.org> <8336c5rw5t.fsf@gnu.org> <83y2txq8fw.fsf@gnu.org> Date: Fri, 24 Jan 2020 16:41:40 +0100 In-Reply-To: (Robert Pluim's message of "Fri, 24 Jan 2020 14:50:10 +0100") Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 39133 Cc: lg.zevlg@gmail.com, 39133@debbugs.gnu.org, mituharu@math.s.chiba-u.ac.jp, handa@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain >>>>> On Fri, 24 Jan 2020 14:50:10 +0100, Robert Pluim said: Robert> Yes, I worked that out. A simple crash, for once :-) --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-Don-t-attempt-to-cache-glyph-metrics-for-FONT_INVALI.patch >From 667f47abecc13e8a47181f338e727d95e57a6354 Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Fri, 24 Jan 2020 14:11:44 +0100 Subject: [PATCH] Don't attempt to cache glyph metrics for FONT_INVALID_CODE This was causing massive slowdown in redisplay when eg #xfe0f (VARIATION SELECTOR-16) was present, as the cache ended up very large, unused, and being recreated on every call to font_fill_lglyph_metrics (Bug#39133). * src/composite.c (fill_gstring_body): Hoist FONT_OBJECT_P check out of loop. Calculate glyph code and check for FONT_INVALID_CODE before calling font_fill_lglyph_metrics. Pass glyph code to it. * src/font.c (font_fill_lglyph_metrics): Add code parameter, move glyph code calculation up the call stack into fill_gstring_body. * src/font.h: Adjust font_fill_lglyph_metrics prototype. --- src/composite.c | 18 ++++++++++++++---- src/font.c | 4 +--- src/font.h | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/composite.c b/src/composite.c index 53e6930b5f..364d5c9316 100644 --- a/src/composite.c +++ b/src/composite.c @@ -818,6 +818,11 @@ fill_gstring_body (Lisp_Object gstring) Lisp_Object header = AREF (gstring, 0); ptrdiff_t len = LGSTRING_CHAR_LEN (gstring); ptrdiff_t i; + struct font *font = NULL; + unsigned int code; + + if (FONT_OBJECT_P (font_object)) + font = XFONT_OBJECT (font_object); for (i = 0; i < len; i++) { @@ -832,10 +837,15 @@ fill_gstring_body (Lisp_Object gstring) LGLYPH_SET_FROM (g, i); LGLYPH_SET_TO (g, i); LGLYPH_SET_CHAR (g, c); - if (FONT_OBJECT_P (font_object)) - { - font_fill_lglyph_metrics (g, font_object); - } + + if (font != NULL) + code = font->driver->encode_char (font, LGLYPH_CHAR (g)); + else + code = FONT_INVALID_CODE; + if (code != FONT_INVALID_CODE) + { + font_fill_lglyph_metrics (g, font, code); + } else { int width = XFIXNAT (CHAR_TABLE_REF (Vchar_width_table, c)); diff --git a/src/font.c b/src/font.c index bb39aef92d..2a45630061 100644 --- a/src/font.c +++ b/src/font.c @@ -4416,10 +4416,8 @@ DEFUN ("clear-font-cache", Fclear_font_cache, Sclear_font_cache, 0, 0, 0, void -font_fill_lglyph_metrics (Lisp_Object glyph, Lisp_Object font_object) +font_fill_lglyph_metrics (Lisp_Object glyph, struct font *font, unsigned int code) { - struct font *font = XFONT_OBJECT (font_object); - unsigned code = font->driver->encode_char (font, LGLYPH_CHAR (glyph)); struct font_metrics metrics; LGLYPH_SET_CODE (glyph, code); diff --git a/src/font.h b/src/font.h index 0561e3c83f..8614e7fa10 100644 --- a/src/font.h +++ b/src/font.h @@ -886,7 +886,7 @@ valid_font_driver (struct font_driver const *d) extern Lisp_Object font_range (ptrdiff_t, ptrdiff_t, ptrdiff_t *, struct window *, struct face *, Lisp_Object); -extern void font_fill_lglyph_metrics (Lisp_Object, Lisp_Object); +extern void font_fill_lglyph_metrics (Lisp_Object, struct font *, unsigned int); extern Lisp_Object font_put_extra (Lisp_Object font, Lisp_Object prop, Lisp_Object val); -- 2.23.0 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 24 10:52:38 2020 Received: (at 39133) by debbugs.gnu.org; 24 Jan 2020 15:52:38 +0000 Received: from localhost ([127.0.0.1]:54661 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iv1GA-0000J7-0d for submit@debbugs.gnu.org; Fri, 24 Jan 2020 10:52:38 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49632) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iv1G7-0000It-UR for 39133@debbugs.gnu.org; Fri, 24 Jan 2020 10:52:36 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:34726) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iv1G1-0002yK-Iu; Fri, 24 Jan 2020 10:52:29 -0500 Received: from [176.228.60.248] (port=3309 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iv1G1-00010f-1J; Fri, 24 Jan 2020 10:52:29 -0500 Date: Fri, 24 Jan 2020 17:52:12 +0200 Message-Id: <83muacrgwj.fsf@gnu.org> From: Eli Zaretskii To: Robert Pluim In-reply-to: (message from Robert Pluim on Fri, 24 Jan 2020 16:41:40 +0100) Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> <83r2004rqn.fsf@gnu.org> <8336c5rw5t.fsf@gnu.org> <83y2txq8fw.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 39133 Cc: lg.zevlg@gmail.com, 39133@debbugs.gnu.org, mituharu@math.s.chiba-u.ac.jp, handa@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Robert Pluim > Cc: 39133@debbugs.gnu.org, lg.zevlg@gmail.com, > mituharu@math.s.chiba-u.ac.jp, handa@gnu.org > Date: Fri, 24 Jan 2020 16:41:40 +0100 > > >>>>> On Fri, 24 Jan 2020 14:50:10 +0100, Robert Pluim said: > Robert> Yes, I worked that out. A simple crash, for once :-) > > >From 667f47abecc13e8a47181f338e727d95e57a6354 Mon Sep 17 00:00:00 2001 > From: Robert Pluim > Date: Fri, 24 Jan 2020 14:11:44 +0100 > Subject: [PATCH] Don't attempt to cache glyph metrics for FONT_INVALID_CODE > > This was causing massive slowdown in redisplay when eg #xfe0f > (VARIATION SELECTOR-16) was present, as the cache ended up very large, > unused, and being recreated on every call to font_fill_lglyph_metrics > (Bug#39133). > > * src/composite.c (fill_gstring_body): Hoist FONT_OBJECT_P check out > of loop. Calculate glyph code and check for FONT_INVALID_CODE before > calling font_fill_lglyph_metrics. Pass glyph code to it. > > * src/font.c (font_fill_lglyph_metrics): Add code parameter, move > glyph code calculation up the call stack into fill_gstring_body. > > * src/font.h: Adjust font_fill_lglyph_metrics prototype. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 02 02:40:13 2020 Received: (at 39133) by debbugs.gnu.org; 2 Mar 2020 07:40:13 +0000 Received: from localhost ([127.0.0.1]:37222 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1j8fgT-0003Sn-Ay for submit@debbugs.gnu.org; Mon, 02 Mar 2020 02:40:13 -0500 Received: from mail-wr1-f67.google.com ([209.85.221.67]:35990) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1j8fgR-0003SL-99 for 39133@debbugs.gnu.org; Mon, 02 Mar 2020 02:40:11 -0500 Received: by mail-wr1-f67.google.com with SMTP id j16so11204690wrt.3 for <39133@debbugs.gnu.org>; Sun, 01 Mar 2020 23:40:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :mime-version; bh=2Iwk2tKRgu+iJ4YEvE1mFLzUKTirWyqq74bq0alYpns=; b=BXUX9d+BOtoFmvdSE6PLJhfsNrc3k3iSlO1CHeuJ+Bsj895XlKZAtIMl9fjfUmQV8f YSfIvD0pJdzhqLjRWVyT6IgAPmSp7fCZVtyur3JWL5KAYjxYtFtqo1vXr2tNmIn4bvp0 6MDOvSc8ntKHN9s+QQisV0oqEJhAJLl8wEejr0KzxWTv7vSRduElqrtCFOPqC6d9jF0m owmeAYHwCFw2ZG3XoFviLIPyx+jkCdVjDonqjehEK4Ed3Hxog7NBMYrXNDQTdD2ICvAp VGWmV4y5M+CA/ndfTGEf/TW8JnrGZGdVxEy802yvszMj4mXmgTU36GTcOutfY9HuD69U reeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:mime-version; bh=2Iwk2tKRgu+iJ4YEvE1mFLzUKTirWyqq74bq0alYpns=; b=DBmUndEepJbMlOhBM8337cAW3BMB8qKfO3x4+x28EAP0ofM7Sue4wzNeQgOGv1Ospj vf8U0U/TBLG37kbUWqA41658DWytr5OntDIZ+Mbu9lWyYtNRNwpTs//kTe615SNLVxez iK58j3EnGDzfQPUIVez4RWVsLoekjMNGAkykAJExwJHhYTsaPLw1MIqbS9JUR81WviuM lLK4mdw/JwdcB7RJZ0mUcb0motEuqf4qANlJDzJh0ftvpSbMryZ4sd9oB9ZLs27fMkv1 NX3PSxLq5M0SuZpyPhRz7dO6b/Mx9DDH7QHCwWNIf9nuLrhbaSSpCsica2mIwV+T+XfK Ac4w== X-Gm-Message-State: ANhLgQ2QqBDQuzpUIpXbTcJC+4+HlbWBhGhgEGkkOIHUNPKKJowhmoHP FaFo1FK1eQrJiaFPQptQwYw= X-Google-Smtp-Source: ADFU+vs9DXz/k/6j60JKPOlwU40fTnWCnd14RHJ4JH1nuYKcsoMHAfTX74PZfmnHgjidcDvyqFe1RA== X-Received: by 2002:adf:e6ca:: with SMTP id y10mr359592wrm.220.1583134805284; Sun, 01 Mar 2020 23:40:05 -0800 (PST) Received: from rpluim-mac ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id f15sm8521411wru.83.2020.03.01.23.40.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2020 23:40:04 -0800 (PST) From: Robert Pluim To: Eli Zaretskii Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> <83r2004rqn.fsf@gnu.org> <8336c5rw5t.fsf@gnu.org> <83y2txq8fw.fsf@gnu.org> <83muacrgwj.fsf@gnu.org> Date: Mon, 02 Mar 2020 08:40:02 +0100 In-Reply-To: <83muacrgwj.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 24 Jan 2020 17:52:12 +0200") Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.5 (/) X-Debbugs-Envelope-To: 39133 Cc: 39133@debbugs.gnu.org, lg.zevlg@gmail.com, mituharu@math.s.chiba-u.ac.jp, handa@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.5 (--) >>>>> On Fri, 24 Jan 2020 17:52:12 +0200, Eli Zaretskii said: >> From: Robert Pluim >> Cc: 39133@debbugs.gnu.org, lg.zevlg@gmail.com, >> mituharu@math.s.chiba-u.ac.jp, handa@gnu.org >> Date: Fri, 24 Jan 2020 16:41:40 +0100 >> >> >>>>> On Fri, 24 Jan 2020 14:50:10 +0100, Robert Pluim said: Robert> Yes, I worked that out. A simple crash, for once :-) >> >> >From 667f47abecc13e8a47181f338e727d95e57a6354 Mon Sep 17 00:00:00 2001 >> From: Robert Pluim >> Date: Fri, 24 Jan 2020 14:11:44 +0100 >> Subject: [PATCH] Don't attempt to cache glyph metrics for FONT_INVALID_CODE >> >> This was causing massive slowdown in redisplay when eg #xfe0f >> (VARIATION SELECTOR-16) was present, as the cache ended up very large, >> unused, and being recreated on every call to font_fill_lglyph_metrics >> (Bug#39133). >> >> * src/composite.c (fill_gstring_body): Hoist FONT_OBJECT_P check out >> of loop. Calculate glyph code and check for FONT_INVALID_CODE before >> calling font_fill_lglyph_metrics. Pass glyph code to it. >> >> * src/font.c (font_fill_lglyph_metrics): Add code parameter, move >> glyph code calculation up the call stack into fill_gstring_body. >> >> * src/font.h: Adjust font_fill_lglyph_metrics prototype. Eli> Thanks. So Mike Fabian has tested this, and it works for him. Which branch would you like me to push this to? Robert From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 02 03:49:47 2020 Received: (at 39133) by debbugs.gnu.org; 2 Mar 2020 08:49:47 +0000 Received: from localhost ([127.0.0.1]:37282 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1j8gln-0007vN-E6 for submit@debbugs.gnu.org; Mon, 02 Mar 2020 03:49:47 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53730) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1j8gll-0007v5-Ph for 39133@debbugs.gnu.org; Mon, 02 Mar 2020 03:49:46 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:35267) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1j8glg-0005RR-5r; Mon, 02 Mar 2020 03:49:40 -0500 Received: from [176.228.60.248] (port=3931 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1j8glf-000110-Gf; Mon, 02 Mar 2020 03:49:39 -0500 Date: Mon, 02 Mar 2020 10:49:33 +0200 Message-Id: <83a74zywde.fsf@gnu.org> From: Eli Zaretskii To: Robert Pluim In-Reply-To: (message from Robert Pluim on Mon, 02 Mar 2020 08:40:02 +0100) Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> <83r2004rqn.fsf@gnu.org> <8336c5rw5t.fsf@gnu.org> <83y2txq8fw.fsf@gnu.org> <83muacrgwj.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 39133 Cc: 39133@debbugs.gnu.org, lg.zevlg@gmail.com, mituharu@math.s.chiba-u.ac.jp, handa@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > From: Robert Pluim > Cc: lg.zevlg@gmail.com, 39133@debbugs.gnu.org, > mituharu@math.s.chiba-u.ac.jp, handa@gnu.org > Date: Mon, 02 Mar 2020 08:40:02 +0100 > > So Mike Fabian has tested this, and it works for him. Which branch > would you like me to push this to? The release branch, please. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 02 04:26:01 2020 Received: (at control) by debbugs.gnu.org; 2 Mar 2020 09:26:01 +0000 Received: from localhost ([127.0.0.1]:37309 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1j8hKq-0000ca-NY for submit@debbugs.gnu.org; Mon, 02 Mar 2020 04:26:00 -0500 Received: from mail-wr1-f52.google.com ([209.85.221.52]:37915) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1j8hKp-0000cG-9s for control@debbugs.gnu.org; Mon, 02 Mar 2020 04:25:59 -0500 Received: by mail-wr1-f52.google.com with SMTP id t11so5163599wrw.5 for ; Mon, 02 Mar 2020 01:25:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version; bh=oFGCNN+Kp7IPx6ikcpMo/MAE37mMhhRCcQxqOYqxmfE=; b=sEvjShfNZ1NLSPv7oEv4giMzXspjKlzMA6ZMgIvCZHI5iPDAOi80q5JvDyrFcM9GbW 5tkIx3+QRfYQqrdOEC+o97GNhc7/NJ4ifEmpL3cjDBkwh9ejDk7ny9OAgOcmTMA5tvtP vQrV0zaPkFdfK7FZuabHfJzl6JzlOBQZbfQ34+QU0R+OEPokDghK3Mfg9FK5Y5rze7fM GMKF+Egoy4T5dRvDYhDv/5+LSejLWTfLdrqxa13e2gp23muJ1mhQfvWUz/bO7Dp0QLyH u/HfKsJdOv/EakrjtR5FX6moENFX3+yDgpgHwyfHDrr23p2T3xWV2jnLVrWx0ecxPS40 qcaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=oFGCNN+Kp7IPx6ikcpMo/MAE37mMhhRCcQxqOYqxmfE=; b=QYT4JGCnTacXYoOF9KR2OjJ2hm1L8Uzy50V+5AiS1eGa+iF9oiaxPWxB++DEdCSvg+ 8HaTe3qlepgSDAga98fwCa8OTMP7SWfy2db71Y3y19QHa6J3YhXCZWBzBl/O7Z/zt1Kt jXWISful8iiXFwBMwgwzhVvY43X+RR33Pja+jAaijPszKarQTYvT+jHr120v9CAoUBSd CiuA9SwTYglHpMEMyZKSRoLm3og5xdcFpHKD71ngbHWsCAws9sfWiZdiUGn+bmgzxwZM IMIcuRfGHfM3Z1l5ojM0raxIKSJpe1b19eR9R9EQBKr7UmJ7Vfhw6ev1AoyLm7JLLpBu CFUw== X-Gm-Message-State: ANhLgQ0iMNoh9aV6wQJ5gFjqTcBMSSCVraGmEsDc/6mdp0eOMYy+XIdC yE9NtJ72wCULpyzOWkfDoBZTAvEv X-Google-Smtp-Source: ADFU+vuvs4iIy9eF64plqHBdZEBWcOYs15x9+FVjwEVGKnKFuxM5y5ZNwbcbw7tAOmy/F9gLYTXNWQ== X-Received: by 2002:adf:eaca:: with SMTP id o10mr5057903wrn.401.1583141153346; Mon, 02 Mar 2020 01:25:53 -0800 (PST) Received: from rpluim-mac ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id i67sm3289951wri.50.2020.03.02.01.25.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2020 01:25:52 -0800 (PST) From: Robert Pluim To: control@debbugs.gnu.org Subject: control message for bug #39133 Date: Mon, 02 Mar 2020 10:25:52 +0100 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.5 (-) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.5 (--) fixed 39133 27.1 quit From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 02 04:25:15 2020 Received: (at 39133-done) by debbugs.gnu.org; 2 Mar 2020 09:25:15 +0000 Received: from localhost ([127.0.0.1]:37306 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1j8hK7-0000bF-AU for submit@debbugs.gnu.org; Mon, 02 Mar 2020 04:25:15 -0500 Received: from mail-wr1-f43.google.com ([209.85.221.43]:36216) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1j8hK4-0000au-7s for 39133-done@debbugs.gnu.org; Mon, 02 Mar 2020 04:25:13 -0500 Received: by mail-wr1-f43.google.com with SMTP id j16so11600439wrt.3 for <39133-done@debbugs.gnu.org>; Mon, 02 Mar 2020 01:25:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :mime-version; bh=Yh2ESQ7TO5e5abOyQLxpDDN71J0Y8dcpKcJe7FCthgc=; b=L8gb/Kh1XhGFt3ARUd0EapDoCx8AVX2VqbD4kcPcMSuLG5/WLVJHb0WyffWmL7cErd +NShhTPW8cgYUZrFZGcqTy5Vs2rJyky0nt/XZHI9WQAJoH1MonHRdA135t/npxDwPmo/ h7Mbu2SfntIf/tn5V37P/FPKP1826qujku0/KT1FKwpUgpIC10Zci5nuHEiZH7IWvhzt jFWmW0PLYTnc5Boc0TUhyL0sOh/9eUKcDDCsNBv65jaq+feFK1a+ZcLmB/AOXIxHDgQy oWHbdZaQb2aPUZQ0Z3UaeamytV8Jja3x+kIYjnNkwimEo4lhM0t4p6ETdaz+jKWZE6JB JvAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:mime-version; bh=Yh2ESQ7TO5e5abOyQLxpDDN71J0Y8dcpKcJe7FCthgc=; b=qAWfK0nevTzwOS3pI3E334DA8vbmWuuZ53UffNshmM1hIq4cDLCi6OZrOFrOBfvlvz waXPUXYhNXjNXZI4VkiemjIZ0AYYUONf+/0JvOdVxafj0jhQgctCNg60h4DoPRsAicZ1 1Nr8o3djMzZ+rMsFQf07iuqXZcJ3krXLFxNVviaMdD042HF5WcpoxNNJOVAv+BwEyiDa sXLefMmQEEgQRpXHpE4sibwDQ2BLh357DQjn/VusoyahqNawYRN+HlC9PqXDydZRII5f T95bHgAIiGnFGwjaI7HZd30krfXp8PFkS1b+1kIdzt3U6f4YkU2RgSz11tMymfetAKjS PjMg== X-Gm-Message-State: ANhLgQ3CvG8ZRf4c3jNZZVeX7FnlSLyz4HT5jsTkJOzoO13F9mIKyjRf omW6LZc+lWIMeSvXDmNcoqVwXYA+ X-Google-Smtp-Source: ADFU+vtguytSvFy7trOWs5YI6fa1apYK9+Y0rV1Rc/WdFNQJ1rRrPV1tBCAWkH93TJqctOQYvPrxwg== X-Received: by 2002:adf:fc81:: with SMTP id g1mr4298628wrr.410.1583141105962; Mon, 02 Mar 2020 01:25:05 -0800 (PST) Received: from rpluim-mac ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id q6sm26659590wrf.67.2020.03.02.01.25.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2020 01:25:05 -0800 (PST) From: Robert Pluim To: Eli Zaretskii Subject: Re: bug#39133: 28.0.50; Emacs slowdown on special char References: <83lfqa5aa2.fsf@gnu.org> <83r2004rqn.fsf@gnu.org> <8336c5rw5t.fsf@gnu.org> <83y2txq8fw.fsf@gnu.org> <83muacrgwj.fsf@gnu.org> <83a74zywde.fsf@gnu.org> Date: Mon, 02 Mar 2020 10:25:03 +0100 In-Reply-To: <83a74zywde.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 02 Mar 2020 10:49:33 +0200") Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.5 (/) X-Debbugs-Envelope-To: 39133-done Cc: 39133-done@debbugs.gnu.org, lg.zevlg@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.5 (--) >>>>> On Mon, 02 Mar 2020 10:49:33 +0200, Eli Zaretskii said: >> From: Robert Pluim >> Cc: lg.zevlg@gmail.com, 39133@debbugs.gnu.org, >> mituharu@math.s.chiba-u.ac.jp, handa@gnu.org >> Date: Mon, 02 Mar 2020 08:40:02 +0100 >> >> So Mike Fabian has tested this, and it works for him. Which branch >> would you like me to push this to? Eli> The release branch, please. Done as fe1a447d52 Closing. Robert From unknown Sun Jun 22 00:06:13 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 30 Mar 2020 11:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator