Re: threads and shared interpreter data structures

2004-01-02 Thread Leopold Toetsch
Leopold Toetsch [EMAIL PROTECTED] wrote: 3) a separate array for the JITed method stubs, which are per interpeter and only if the platform can generate such stubs on the fly. Done now. JITted NCI methods are now enabled again but only i386 has the necessary interface code in jit/*. leo

Re: Threads and Events (was Re: threads and shared interpreter data structures)

2003-12-30 Thread Gordon Henriksen
On Tuesday, December 23, 2003, at 08:40 , Rod Adams wrote: - Most treaded code can be converted to an event loop (+async I/O) without issue. Esp if we have co-routines. - For the other stuff, we'd still have Type 2 threads, which gets the job done. (Just got back from vacation and was reviewing

Re: threads and shared interpreter data structures

2003-12-24 Thread Elizabeth Mattijsen
At 18:33 -0500 12/23/03, Dan Sugalski wrote: At 3:54 PM -0600 12/23/03, Rod Adams wrote: If parrot is fast enough at threading and general computation, I'd see a PPWAS as an amazing attractive target platform. - Open Source Specs Code. - Multiple native languages - Could relatively easily port

Re: threads and shared interpreter data structures

2003-12-24 Thread Robert Spier
A marriage between Parrot and APR (Apache Portable Runtime) might be a marriage in heaven, in that respect. For those not in the know, APR contains most of the grotty low-level bits. It misses some things that are important to us, like fork(), and it's got this concept of memory pools,

Re: threads and shared interpreter data structures

2003-12-23 Thread Elizabeth Mattijsen
At 14:16 -0500 12/22/03, Dan Sugalski wrote: At 8:05 PM +0100 12/22/03, Elizabeth Mattijsen wrote: In Perl 5, the sharedness of a variable can be determined at run-time. Leo's mentioned that a PMC will never change its address during its lifetime. Can these two requirements be met if there

Re: threads and shared interpreter data structures

2003-12-23 Thread Leopold Toetsch
Elizabeth Mattijsen [EMAIL PROTECTED] wrote: At 14:16 -0500 12/22/03, Dan Sugalski wrote: Yes. Making a PMC shared can be as simple as swapping out the vtable pointer in the PMC structure--no need to move it around at all. (Or, worst case, turning the PMC into a reference PMC for the actual PMC,

Re: threads and shared interpreter data structures

2003-12-23 Thread Elizabeth Mattijsen
At 10:37 +0100 12/23/03, Leopold Toetsch wrote: 2) the Perl5ish declaration my $var : shared; is basically: $P0 = new SharedPerlUndef; OTOH: share($var); may need to morph $var into a shared reference, with an additional indirection and memory overhead. (I don't

Re: threads and shared interpreter data structures

2003-12-23 Thread Dave Mitchell
On Tue, Dec 23, 2003 at 11:07:53AM +0100, Elizabeth Mattijsen wrote: At 10:37 +0100 12/23/03, Leopold Toetsch wrote: 2) the Perl5ish declaration my $var : shared; is basically: $P0 = new SharedPerlUndef; OTOH: share($var); may need to morph $var into a

Re: threads and shared interpreter data structures

2003-12-23 Thread Dan Sugalski
At 9:49 AM +0100 12/23/03, Elizabeth Mattijsen wrote: At 14:16 -0500 12/22/03, Dan Sugalski wrote: At 8:05 PM +0100 12/22/03, Elizabeth Mattijsen wrote: In Perl 5, the sharedness of a variable can be determined at run-time. Leo's mentioned that a PMC will never change its address during its

Re: threads and shared interpreter data structures

2003-12-23 Thread Rod Adams
Dan Sugalski wrote: They'll live. Python and Ruby both have a single global interpreter lock and nobody much cares. People won't move to parrot because of signal or thread support, or because we give them a cookie. People will move to parrot because it runs perl 6, or because it gives them

Re: threads and shared interpreter data structures

2003-12-23 Thread Uri Guttman
RA == Rod Adams [EMAIL PROTECTED] writes: A major use of many languages these days is web services. In the parrot world, I see three possible ways for this to happen. - CGI/Exec. No problem to make parrot work, but the performance issues with this are well known. - mod_parrot.

Re: threads and shared interpreter data structures

2003-12-23 Thread Simon Glover
On Tue, 23 Dec 2003, Uri Guttman wrote: RA == Rod Adams [EMAIL PROTECTED] writes: A major use of many languages these days is web services. In the parrot world, I see three possible ways for this to happen. - CGI/Exec. No problem to make parrot work, but the performance issues

Re: threads and shared interpreter data structures

2003-12-23 Thread Rod Adams
Uri Guttman wrote: RA == Rod Adams [EMAIL PROTECTED] writes: that is not the only way as i have pointed out. it is just a way that is promoted heavily (like java). events if done correctly are generaly faster than threads and use much less ram (no stack context created for each thread). and

Re: threads and shared interpreter data structures

2003-12-23 Thread Dan Sugalski
At 3:54 PM -0600 12/23/03, Rod Adams wrote: Dan Sugalski wrote: They'll live. Python and Ruby both have a single global interpreter lock and nobody much cares. People won't move to parrot because of signal or thread support, or because we give them a cookie. People will move to parrot because

Re: threads and shared interpreter data structures

2003-12-23 Thread Dan Sugalski
At 6:15 PM -0500 12/23/03, Simon Glover wrote: On Tue, 23 Dec 2003, Uri Guttman wrote: RA == Rod Adams [EMAIL PROTECTED] writes: A major use of many languages these days is web services. In the parrot world, I see three possible ways for this to happen. - CGI/Exec. No problem to

Threads and Events (was Re: threads and shared interpreter data structures)

2003-12-23 Thread Rod Adams
Uri Guttman wrote: RA == Rod Adams [EMAIL PROTECTED] writes: Except then the client wanted it to work under Win32, where I've never trusted any of the pseudo-forks that perl did (esp with Network I/O going on). So I rewrote the whole thing in a language that supported threads. other than the fork

Re: threads and shared interpreter data structures

2003-12-23 Thread Robert Spier
At Tue, 23 Dec 2003 14:23:45 -0500, Dan Sugalski wrote: It's that last thing I'm worried about. That all thread related things in Parrot are forced to use an extra indirection and consequent performance penalty. They'll live. Python and Ruby both have a single global interpreter lock

Re: threads and shared interpreter data structures

2003-12-22 Thread Leopold Toetsch
Elizabeth Mattijsen [EMAIL PROTECTED] wrote: The main problem with Perl 5 ithreads is the thread startup CPU and memory usage. I've now compiled a threaded perl5.8.0 and benchmarked prime-pthread from perlthrtut against parrot: $ time parrot t.imc 1 real0m1.044s user0m0.730s sys

Re: threads and shared interpreter data structures

2003-12-22 Thread Dan Sugalski
At 6:38 PM -0800 12/21/03, Jeff Clites wrote: On Dec 21, 2003, at 5:44 PM, Dan Sugalski wrote: At 5:31 PM -0800 12/21/03, Jeff Clites wrote: It sounds like an assumption here is that separate threads get separate interpreter instances. I would have thought that a typical multithreaded program

Re: threads and shared interpreter data structures

2003-12-22 Thread Elizabeth Mattijsen
At 11:00 -0500 12/22/03, Dan Sugalski wrote: Easily, albeit with a bit of a speed hit for threaded code. (Java has immutable strings which cuts out a lot of the need for synchronization, since you don't need any for immutable data) If all access is through PMCs, and it needs to be, you use the

Re: threads and shared interpreter data structures

2003-12-22 Thread Dan Sugalski
At 8:05 PM +0100 12/22/03, Elizabeth Mattijsen wrote: At 11:00 -0500 12/22/03, Dan Sugalski wrote: Easily, albeit with a bit of a speed hit for threaded code. (Java has immutable strings which cuts out a lot of the need for synchronization, since you don't need any for immutable data) If all

threads and shared interpreter data structures

2003-12-21 Thread Leopold Toetsch
I'm currently investigating various issues related to internal interpreter data structures and multiple threads. Here is one, that need some design decision: Parrot_base_vtables[] (the master array of all registered vtables) is currently a true global. This causes nice errors and segfaults on

Re: threads and shared interpreter data structures

2003-12-21 Thread Elizabeth Mattijsen
Please note that these are comments from a Parrot list lurker and outsider, but also as someone with some hands on experience with Perl threads... ;-) And probably stating the bleedingly obvious. At 11:09 +0100 12/21/03, Leopold Toetsch wrote: *If* ParrotClasses are per thread (very likely

Re: threads and shared interpreter data structures

2003-12-21 Thread Leopold Toetsch
Elizabeth Mattijsen [EMAIL PROTECTED] wrote: Hi Liz, Please note that these are comments from a Parrot list lurker and outsider, but also as someone with some hands on experience with Perl threads... ;-) And probably stating the bleedingly obvious. I'm appreciating your (and of course

Re: threads and shared interpreter data structures

2003-12-21 Thread Sterling Hughes
I'm currently investigating various issues related to internal interpreter data structures and multiple threads. Here is one, that need some design decision: Parrot_base_vtables[] (the master array of all registered vtables) is currently a true global. This causes nice errors and

Re: threads and shared interpreter data structures

2003-12-21 Thread Elizabeth Mattijsen
At 14:17 +0100 12/21/03, Leopold Toetsch wrote: Elizabeth Mattijsen [EMAIL PROTECTED] wrote: Ideally I'd see a COWed structure: a thread startup would not actually copy the main vtable structure. As soon as something needs to be specific for the thread, only then needs that structure to be

Re: threads and shared interpreter data structures

2003-12-21 Thread Leopold Toetsch
Elizabeth Mattijsen [EMAIL PROTECTED] wrote: At 14:17 +0100 12/21/03, Leopold Toetsch wrote: 1) a real global Parrot_base_vtables[] containing pointers to the local *static* temp_base_vtable inside the PMC classes C file. 2) another per interpreter vtable array holding all dynamic entries

Re: threads and shared interpreter data structures

2003-12-21 Thread Leopold Toetsch
Elizabeth Mattijsen wrote: Whenever a PMC gets shared, it would get changed read and write function slots of the applicable vtable entries that would add mutexes around all accesses to that PMC. Yep. That was my conclusion too. A shared PMC will be a variant of the plain one, where all vtable