From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Mark H Weaver Newsgroups: gmane.lisp.guile.devel Subject: Re: Register VM WIP Date: Wed, 16 May 2012 12:27:10 -0400 Message-ID: <87obpo9jmp.fsf@netris.org> References: <871umqr8q0.fsf@pobox.com> <873972zczy.fsf@gnu.org> <87bolpmgew.fsf@pobox.com> <871umkbvp3.fsf@netris.org> <87fwb0k35g.fsf@pobox.com> <87sjf09r5v.fsf@netris.org> <87r4uki35b.fsf@pobox.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1337185720 4169 80.91.229.3 (16 May 2012 16:28:40 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 16 May 2012 16:28:40 +0000 (UTC) Cc: Ludovic =?utf-8?Q?Court=C3=A8s?= , guile-devel@gnu.org To: Andy Wingo Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Wed May 16 18:28:39 2012 Return-path: Envelope-to: guile-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 1SUh5W-00060y-9n for guile-devel@m.gmane.org; Wed, 16 May 2012 18:28:34 +0200 Original-Received: from localhost ([::1]:39804 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SUh5V-0003tW-LU for guile-devel@m.gmane.org; Wed, 16 May 2012 12:28:33 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:48392) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SUh5S-0003tJ-22 for guile-devel@gnu.org; Wed, 16 May 2012 12:28:31 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SUh5M-0002Lk-KX for guile-devel@gnu.org; Wed, 16 May 2012 12:28:29 -0400 Original-Received: from world.peace.net ([96.39.62.75]:56285) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SUh5M-0002L8-G0; Wed, 16 May 2012 12:28:24 -0400 Original-Received: from 209-6-91-212.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com ([209.6.91.212] helo=yeeloong) by world.peace.net with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1SUh5E-00024J-KA; Wed, 16 May 2012 12:28:16 -0400 In-Reply-To: <87r4uki35b.fsf@pobox.com> (Andy Wingo's message of "Wed, 16 May 2012 16:58:24 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.92 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 96.39.62.75 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:14470 Archived-At: Hi Andy, Andy Wingo writes: > Likewise I can imagine cases in which you might end up with more than > 2**12 active locals, especially in the presence of macros. In that case > you spill. But where do you spill? You spill to them to stack of course, which brings me to my next point: as discussed in chapter 4 of David Kranz's thesis on the Orbit compiler (highly recommended reading) it is sometimes better to store a local on the stack, even if you have registers to spare. The reason is that registers must be saved and restored for every procedure call, and as we all know, Scheme has no shortage of those. What's your plan for saving and restoring such a large register file? Best, Mark