GNU bug report logs - #26518
26.0.50; M-x bubbles crashes emacs

Previous Next

Package: emacs;

Reported by: Stephen Berman <stephen.berman <at> gmx.net>

Date: Sat, 15 Apr 2017 14:14:01 UTC

Severity: normal

Tags: fixed

Found in version 26.0.50

Done: npostavs <at> users.sourceforge.net

Bug is archived. No further changes may be made.

Full log


Message #17 received at 26518 <at> debbugs.gnu.org (full text, mbox):

From: Vibhav Pant <vibhavp <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>, "emacs-devel <at> gnu.org" <emacs-devel <at> gnu.org>
Cc: Stephen Berman <stephen.berman <at> gmx.net>, 26518 <at> debbugs.gnu.org
Subject: Re: bug#26518: 26.0.50; M-x bubbles crashes emacs
Date: Sun, 16 Apr 2017 20:26:27 +0530
The following code also crashes Emacs:
(defun fun1 (v)
  (car (cond ((eq v 1) '(one . 1))
    ((eq v 2) '(two . 2))
    ((eq v 3) '(three . 3)))))
(byte-compile 'fun1)
(defun fun2 (v)
  (inline (fun1 v)))
(byte-compile 'fun2)
(fun2 1)

The problem lies in byte-compile-inline-lapcode not being able to
inline bytecode that uses switch, because the peephole optimizer
will often merge tags and convert goto-to-return to returns,
making it impossible restore the correct byte-compile-depth while
inlining it. I can think of two ways to fix this:

Disable certain optimizations for byte-switch code, and allow
the jump table to store certain properties that will make it possible
to inline switch code properly (specifically, the donetag). This could
be done by replacing the hash table with a (DONETAG . JUMP-TABLE) cons
pair (inline-lapcode would use the car, while the bytecode VM would use
it's cdr).

Disable inlining byte-switch code entirely. However, this would impact
performance negatively.

Thoughts?

Regards,
Vibhav

-- 
Vibhav Pant
vibhavp <at> gmail.com




This bug report was last modified 8 years and 32 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.