From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Daniel Colascione Newsgroups: gmane.emacs.devel Subject: Re: inlinable functions instead of macros Date: Sat, 18 Aug 2012 15:15:12 -0700 Message-ID: <503013F0.1020300@dancol.org> References: <502EDAF3.6030005@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enigA70B2FCCD15D103F5DFCB817" X-Trace: ger.gmane.org 1345328140 31362 80.91.229.3 (18 Aug 2012 22:15:40 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 18 Aug 2012 22:15:40 +0000 (UTC) Cc: Stefan Monnier , emacs-devel@gnu.org To: Paul Eggert Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Aug 19 00:15:40 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1T2rIx-0005a3-FA for ged-emacs-devel@m.gmane.org; Sun, 19 Aug 2012 00:15:39 +0200 Original-Received: from localhost ([::1]:33354 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T2rIv-0001jN-WB for ged-emacs-devel@m.gmane.org; Sat, 18 Aug 2012 18:15:37 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:55686) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T2rIu-0001jI-6q for emacs-devel@gnu.org; Sat, 18 Aug 2012 18:15:37 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T2rIs-000502-Ry for emacs-devel@gnu.org; Sat, 18 Aug 2012 18:15:36 -0400 Original-Received: from dancol.org ([96.126.100.184]:45112) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T2rIs-0004lb-Lt for emacs-devel@gnu.org; Sat, 18 Aug 2012 18:15:34 -0400 Original-Received: from c-76-22-66-162.hsd1.wa.comcast.net ([76.22.66.162] helo=[192.168.1.2]) by dancol.org with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.72) (envelope-from ) id 1T2rIk-0000v8-Ej; Sat, 18 Aug 2012 15:15:26 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:14.0) Gecko/20120713 Thunderbird/14.0 In-Reply-To: <502EDAF3.6030005@cs.ucla.edu> X-Enigmail-Version: 1.4.3 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 96.126.100.184 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:152650 Archived-At: This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigA70B2FCCD15D103F5DFCB817 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 8/17/12 4:59 PM, Paul Eggert wrote: > On 08/17/2012 04:48 PM, Stefan Monnier wrote: >> While inlinable functions are much cleaner than macros, they have >> a very serious downside: you just end up with >> >> lisp.h:2416: Emacs fatal error: assertion failed: found =3D=3D !EQ (bl= v->defcell, blv->valcell) >> >> I.e. the file&line info is always the same rather than giving the >> file&line where the inlinable function was called. >=20 > On systems that use glibc we could adjust eassert so that it > also prints a backtrace, using glibc's 'backtrace' function. See > . > This would not be quite the same thing, as it would print function > names, insn offsets, and return addresses; but it would recapture > some of the ground lost here, and the backtrace info would in some > cases be more useful than what we have now. On Windows, we solved this problem a long time ago by teaching the operating system itself how to walk stack frames. When a program crashes, the OS captures a minidump containing the faulting stack, instruction pointer, register contents, and (optionally) things like data segments. If you have one of these minidumps, you don't need particularly good assertion-failure output: you have everything you need in the minidump, which you can load into the debugger and examine. I hear Google's breakpad provides similar facilities for other systems. --------------enigA70B2FCCD15D103F5DFCB817 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (Darwin) Comment: GPGTools - http://gpgtools.org iEYEARECAAYFAlAwE/AACgkQ17c2LVA10VsL8QCg0oavXHY5VjJfTeoJfp4qpAN9 NoMAoIPLhAak6UMDs+E91EWDFpW0DnfF =+djc -----END PGP SIGNATURE----- --------------enigA70B2FCCD15D103F5DFCB817--