Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion YARL - yet another run loop: CSwitch

Newsgroups: perl.perl6.internals
Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!nntp.perl.org
Return-Path: <l...@toetsch.at>
Mailing-List: contact perl6-internals-h...@perl.org; run by ezmlm
Delivered-To: mailing list perl6-intern...@perl.org
Delivered-To: perl6-intern...@perl.org
Message-ID: <3E4D7816.90804@toetsch.at>
Date: Sat, 15 Feb 2003 00:13:26 +0100
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20011129
X-Accept-Language: en-us
MIME-Version: 1.0
To: Dan Sugalski <d...@sidhe.org>
Cc: Jason Gloudon <p...@gloudon.com>, perl6-intern...@perl.org
Subject: Re: YARL - yet another run loop: CSwitch
References: <3E437319.3060007@toetsch.at> <20030207151150.GA21715@gloudon.com> <3E43E39F.7040408@toetsch.at> <20030208144905.GB24341@gloudon.com> <3E45322A.6040900@toetsch.at> <a05200f08ba731337608c@[63.120.19.221]>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
X-SMTPD: qpsmtpd/0.21-dev, http://develooper.com/code/qpsmtpd/
X-Spam-Check-By: one.develooper.com
X-Spam-Status: No, hits=-1.8 required=7.0 tests=CARRIAGE_RETURNS,QUOTED_EMAIL_TEXT,REFERENCES,SPAM_PHRASE_01_02,USER_AGENT,USER_AGENT_MOZILLA_UA,X_ACCEPT_LANG version=2.43
X-SMTPD: qpsmtpd/0.20, http://develooper.com/code/qpsmtpd/
Approved: n...@nntp.perl.org
From: l...@toetsch.at (Leopold Toetsch)
Lines: 64

Dan Sugalski wrote:

> At 5:36 PM +0100 2/8/03, Leopold Toetsch wrote:


[ threaded JIT/prederef ]


>> Ouch, yes. So does JIT.
>> So JIT/prederefed code must be separated for threads.

> Yup. This was a decision made a long time ago, back when Daniel started 
> the first JIT stuff. 


Not necessarily so now, it seems. Adressing registers by (thread + 
index), as outlined in Jerome's recent reply to the YARL (switched run 
loop) thread is equally fast on e.g. I386. Dunno if other $arch has a 
similar addressing mode. But as all recent processors now are (very) 
pipelined, one extra argument in the op stream only increases code size 
but not execution speed.

> ... (And that was 
> before everyone got it going insanely fast :)


Thank you Sir.


> It's one of the reasons I haven't been too worried about speeding up the 
> core loop. I've been figuring we'll end up with three:
> 
> *) JIT
> *) CGoto
> *) Old indirect dispatch


The fastest are in terms of possible $arch/compiler features now:

  - JIT
  - CGP (makes CGoto obsolete)
  - Switched Prederef (not in CVS)

but plain function call is needed e.g. for JIT - now.


> and leave it at that. When Gregor was working on the prederef I figured 
> we'd use it as the third, since the JIT was new and I wasn't sure it'd 
> be possible to get it as a good general solution, but it's developed so 
> much that I'm not sure it's worth more loop development. (I could, of 
> course, be wrong... :)

JIT (known as that acronym, but isn`t just in time in parrot) is a very 
$arch depend feature. I did speed up mul_i_ic by 2-50 for some constants 
today, which a different $arch doesn't yet have implemented.

The CGP core is really fast for all compilers that have computed goto - 
and honestly, the code that HL emit, will resemble much a code that is 
not well suited for JIT.

The optimizer in imcc is the real *challenge* in the whole story.

leo