From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Antipov Newsgroups: gmane.emacs.devel Subject: Re: Benchmarking temporary Lisp objects [Was: Re: [RFC] temporary Lisp_Strings] Date: Fri, 05 Sep 2014 13:16:21 +0400 Message-ID: <54097F65.5030906@yandex.ru> References: <5405BE5D.1090003@yandex.ru> <5405DE8B.4050201@yandex.ru> <5406EC21.4060200@yandex.ru> <5407281C.3090302@cs.ucla.edu> <54073621.2040403@yandex.ru> <540744F5.2010804@cs.ucla.edu> <5407F1B7.6090704@yandex.ru> <5407F4E6.2040809@cs.ucla.edu> <5407FDF4.7020504@yandex.ru> <54086B1A.8070506@yandex.ru> <54087B5E.10402@yandex.ru> <54088D63.8010406@cs.ucla.edu> <54093561.2010507@yandex.ru> <5409630B.6030201@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1409908620 22092 80.91.229.3 (5 Sep 2014 09:17:00 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 5 Sep 2014 09:17:00 +0000 (UTC) Cc: Stefan Monnier , Emacs development discussions To: Paul Eggert Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Sep 05 11:16:54 2014 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 1XPpdU-0003Ko-Q2 for ged-emacs-devel@m.gmane.org; Fri, 05 Sep 2014 11:16:52 +0200 Original-Received: from localhost ([::1]:56591 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPpdU-000635-Bz for ged-emacs-devel@m.gmane.org; Fri, 05 Sep 2014 05:16:52 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:51432) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPpdA-00060k-Ky for emacs-devel@gnu.org; Fri, 05 Sep 2014 05:16:39 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XPpd2-0001SI-U9 for emacs-devel@gnu.org; Fri, 05 Sep 2014 05:16:32 -0400 Original-Received: from forward8l.mail.yandex.net ([84.201.143.141]:48567) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XPpd2-0001SA-LU for emacs-devel@gnu.org; Fri, 05 Sep 2014 05:16:24 -0400 Original-Received: from smtp1o.mail.yandex.net (smtp1o.mail.yandex.net [37.140.190.26]) by forward8l.mail.yandex.net (Yandex) with ESMTP id 118341A41455; Fri, 5 Sep 2014 13:16:22 +0400 (MSK) Original-Received: from smtp1o.mail.yandex.net (localhost [127.0.0.1]) by smtp1o.mail.yandex.net (Yandex) with ESMTP id 8C925DE2AA8; Fri, 5 Sep 2014 13:16:22 +0400 (MSK) Original-Received: from unknown (unknown [37.139.80.10]) by smtp1o.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id 5tc2aONjbF-GLVCTDtv; Fri, 5 Sep 2014 13:16:21 +0400 (using TLSv1.2 with cipher AES128-SHA (128/128 bits)) (Client certificate not present) X-Yandex-Uniq: d5766bb9-b333-4f15-bc69-5f679e850d75 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1409908582; bh=2ZDgksjn/HOl+XGGv54mVC0oMcDxNWF07SgAp6dg/c4=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=STZBu5AC+NecWzi0yS2RLBDR/ah0kdBMRYM8NX5sAI5PdDYpjU8T8g7Ebdff7zL8s FUYZUuTvFezMfAZps7tvsgBBDnmVdYZyikXTR4qU0qRxfOl+6RRpnu8Vn35/QtEhjh YUanm0B2uNH2qKFL1FINl6d6LDDp4En+Oxhs70Nk= Authentication-Results: smtp1o.mail.yandex.net; dkim=pass header.i=@yandex.ru User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 In-Reply-To: <5409630B.6030201@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 84.201.143.141 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:174032 Archived-At: On 09/05/2014 11:15 AM, Paul Eggert wrote: > I like the idea of simpler and cleaner, but your patch's implementations of > build_local_vector and build_local_string use alloca expressions as function > arguments I don't do that - I'm using 1st arg (result) as a temporary variable, assuming that Lisp_Object is always wide enough to hold an address: #define build_local_vector(obj, size, init) \ (MAX_ALLOCA < (size) * word_size + header_size \ ? obj = Fmake_vector (make_number (size), (init)) \ : (obj = XIL ((uintptr_t) alloca \ here ((size) * word_size + header_size)), \ obj = local_vector_init ((uintptr_t) XLI (obj), (size), (init)))) IIUC the compiler should know about alloca limitations and so should not try to (mis)optimize the code above to: #define build_local_vector(obj, size, init) \ (MAX_ALLOCA < (size) * word_size + header_size \ ? obj = Fmake_vector (make_number (size), (init)) \ obj = local_vector_init \ ((uintptr_t) alloca ((size) * word_size + header_size), \ (size), (init))) Dmitry