From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: "Alfred M. Szmidt" Newsgroups: gmane.emacs.devel Subject: Re: Add more supported primitives in libgccjit IR (was: Shrinking the C core) Date: Mon, 21 Aug 2023 07:02:19 -0400 Message-ID: References: <20230809094655.793FC18A4654@snark.thyrsus.com> <87msym9i4r.fsf@dataswamp.org> <877cpp914t.fsf@localhost> <83fs4dwwdo.fsf@gnu.org> <874jkt90a5.fsf@localhost> <87y1i57jqi.fsf@localhost> <87pm3h7h8k.fsf@localhost> <87h6ot7cf3.fsf@localhost> <87edjx7c0b.fsf@localhost> <831qfxw2cx.fsf@gnu.org> <87v8d95918.fsf@localhost> <87zg2lav4b.fsf@yahoo.com> <87sf8d57wf.fsf@localhost> <87r0nxatu1.fsf@yahoo.com> <87pm3h56ig.fsf@localhost> <87edjxarhz.fsf@yahoo.com> <87edjw4uw4.fsf@localhost> <77daee02cf1ba0db70c1@heytings.org> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="14185"; mail-complaints-to="usenet@ciao.gmane.io" Cc: yantar92@posteo.net, luangruo@yahoo.com, akrl@sdf.org, eliz@gnu.org, incal@dataswamp.org, emacs-devel@gnu.org To: Gregory Heytings Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Aug 21 13:03:09 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qY2ge-0003QQ-4o for ged-emacs-devel@m.gmane-mx.org; Mon, 21 Aug 2023 13:03:08 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qY2fv-000349-I3; Mon, 21 Aug 2023 07:02:23 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qY2fs-00033o-It for emacs-devel@gnu.org; Mon, 21 Aug 2023 07:02:20 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qY2fr-0007Zt-EO; Mon, 21 Aug 2023 07:02:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=Date:References:Subject:In-Reply-To:To:From: mime-version; bh=Y+Sv0FTII6XqvARB3X6XlCWtUVOxpkUWZX71dmKXl6k=; b=Vpp+zrLS8hS8 X3xWmmwEUfcRA9K/4KS9NTnIFcXkrIvkuH8hXuk9J1GI8f0YG81qJFAz2vzXiudeP46cnF+yrMcyE zQOkUj24m+plu4UHFpqB3OfBh14wGa88e+37/7k0SJRP9KUUZkEcwA1b4i2Yyw45FwjIQSWjFWM1T arOYQpP5OprNowfGqkZZcPszJgZsKIOEp33JJMtfzFs5Dof9WRDgrJDQYwL2C4mqXL2sExIKBWJFM xEhBNsXsahrY3vL60lNoFKtKIokKELzaIfYUXyxYThLr5uYEwEftRKVS1NUHOVYQlGjuv9+qW1nRA f/faDddfxLhs2Lcl5kiySw==; Original-Received: from ams by fencepost.gnu.org with local (Exim 4.90_1) (envelope-from ) id 1qY2fr-0000qi-6S; Mon, 21 Aug 2023 07:02:19 -0400 In-Reply-To: <77daee02cf1ba0db70c1@heytings.org> (message from Gregory Heytings on Mon, 21 Aug 2023 09:42:37 +0000) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:309052 Archived-At: So, in a statically typed language, adding two integers takes a single CPU cycle. In a dynamically typed language, it can take many CPU cycles. And of course, using a JIT compiler does not magically transform a dynamically typed language into a statically typed one: you still need to do these dynamic dispatches. To add to that, in SBCL, these checks can be inlined, and optimized out (since SBCL has more information about what it has to do with -- the compiler has access to literally everything it produces and runs, which is not the case in Emacs). So something like FLOOR can be reduced to just doing what is needed (is it of the promised type? If not error, otherwise call the specialized code for doing FLOOR), so the code path becomes much smaller. Like with the arith_driver example, what one would maybe like to do is jump directly to the case one needs instead of going through multiple checks. And who knows how much or little that would matter. It is just one of bazillion differences between SBCL and Emacs.