Re: Need JIT help please - JIT broken with optimized build on Windows (VC)

2007-08-20 Thread Paolo Molaro
On 08/16/07 Joshua Isom wrote: The optimization done by the parrot jit is invalid for the x86 C calling convention: the area of memory containing the passed arguments can be used as scratch space by the called function. [...] Let's go with a Microsoft blog about it,

Re: Need JIT help please - JIT broken with optimized build on Windows (VC)

2007-08-16 Thread Paolo Molaro
On 08/16/07 Ron Blaschke wrote: This optimization reaches likely back to times, when the opcode engine was designed. It's saving one interpreter push statement [1] per JIT calling one external function, and I've always thought of it as a very cool (and valid) thingy, when I first

Re: Supporting safe managed references

2006-01-24 Thread Paolo Molaro
On 01/24/06 Jonathan Worthington wrote: .NET has these managed reference thingies. They're basically like They are called managed pointers. pointers, but safe. What makes them safe is that only certain instructions can create them and the pointer value can't be set directly (we can do

Re: pmc_type

2004-10-29 Thread Paolo Molaro
On 10/29/04 Leopold Toetsch wrote: Ugh, yeah, but what does that buy you? In dynamic languages pure derivational typechecking is very close to useless. Actually, if I were to write a perl runtime for parrot, mono or even the JVM I'd experiment with the same pattern. For the latter

Re: pmc_type

2004-10-28 Thread Paolo Molaro
On 10/27/04 Luke Palmer wrote: Stéphane Payrard writes: That would allow to implement typechecking in imcc. .sym Scalar a a = new .PerlInt # ok. Perlint is derived from Scalar Ugh, yeah, but what does that buy you? In dynamic languages pure derivational typechecking is very

Re: ICU Outdated - Ideas

2004-08-09 Thread Paolo Molaro
On 08/03/04 Leon Brocard wrote: IIRC the mono people wrote their own, but with the ICU data files. Apart from license issues, this might be an interesting thing to look at. We use some of the ICU data files for locale info like day/month names, date/time formats etc. We have a tool that takes

Re: Newbie Question

2004-04-02 Thread Paolo Molaro
On 04/01/04 Goplat wrote: I read in the FAQ, vis a vis using the .NET instead of writing your own The .NET VM didn't even exist when we started development, or at least we didn't know about it when we were working on the design. We do now, though it's still not suitable. [...] Those VMs

Re: [PATCH] more oo*.* benchmarks

2004-03-21 Thread Paolo Molaro
On 03/21/04 Jarkko Hietaniemi wrote: [...] oofib 100%144%132%240%212%140%136% [...] That being said, people more conversant than me in Python/Ruby (or Parrot) are welcome to carefully compare the scripts to verify that the scripts really do implement the same tasks.

Re: Classes and metaclasses

2004-03-14 Thread Paolo Molaro
On 03/13/04 Mark Sparshatt wrote: One difficulty is when calling class methods some languages require that you provide the class object as the receiver (Ruby and c# do this) while some languages let you use an instance of the class as the receiver (Java does this) I think you're confusing

Re: pdd15_objects.pod, attributes, properties, and life

2004-02-27 Thread Paolo Molaro
On 02/27/04 Dan Sugalski wrote: What .NET calls an attribute parrot calls a property What .NET calls a property parrot calls an attribute [...] Oh, yeah. No matter which way we go we'll be confusing someone, since there are languages that call what we call an attribute an attribute. The

Re: Alignment Issues with *ManagedStruct?

2004-02-06 Thread Paolo Molaro
On 02/05/04 Uri Guttman wrote: with this struct (from leo with some minor changes): struct xt { char x; struct yt { char i,k; int j; } Y; char z; } X; and this trivial script (i pass the filename on the command line): [...] i get

Re: How to run typeless languages fast on parrot?

2003-11-07 Thread Paolo Molaro
On 11/06/03 Leopold Toetsch wrote: because pmc as so much slower that native types i loose most of parrots brilliant speed due to the fact that i don't know the types at compile-time. When you get rid of all the temps and the clone[1], the loop with PMCs runs at about

Re: How to run typeless languages fast on parrot?

2003-11-07 Thread Paolo Molaro
On 11/07/03 Leopold Toetsch wrote: Very interesting. While we don't compete with typed languages, its nice Oh, but mono _will_ also compete with dynamically typed languages! :-) to see, that parrot execution speed is in the region of mono - for such small tight loops. Well, that was mono

Re: Registers vs. Stack

2003-08-22 Thread Paolo Molaro
On 08/21/03 Tom Locke wrote: Note that I have *absolutely* no opinion on this (I lack the knowledge). It's just that with Perl, Python, Ruby, the JVM and the CLR all stack based, Parrot seems out on a limb. That's fine by me -- innovation is not about following the crowd, but I feel it does

Re: Objects, finally (try 1)

2003-01-12 Thread Paolo Molaro
On 01/11/03 Nicholas Clark wrote: This allows us to declare 8bit characters and strings of those and all the stuff we're used to with C like unions ... (C# has 16bit chars, and strings are UTF8 encoded , IIRC) ... That doesn't sound right. But if it is right, then it sounds very wrong.

Re: Objects, finally (try 1)

2003-01-12 Thread Paolo Molaro
On 01/12/03 Gopal V wrote: If memory serves me right, Paolo Molaro wrote: The CLR runtimes use 16 bit chars and UTF16-encoded strings (at least as far as it's visible to the 'user' programs). 1023.2.3 #Strings heap 11 The stream of bytes pointed to by a #Strings header

Re: Quick note on JIT bits

2002-11-16 Thread Paolo Molaro
On 11/16/02 Gopal V wrote: the above was a partial cutpaste with s/mono/parrot/ :-) But don't act like you invented it Kaffe had one before you thought about mono JIT ... The idea probably predates kaffe, too. Anyway, I didn't say I had the idea, but the implementation. Quoting what

Re: Backslashes

2002-05-21 Thread Paolo Molaro
On 05/21/02 Aaron Sherman wrote: On Tue, 2002-05-21 at 12:57, Michael G Schwern wrote: Here's an easier one: backslash followed by the delimiter is that thing. Everything else is literal. print 'c:\it\'s\easier\to\write\win32\paths\this\way'; print q{this is ok { and so is

Re: Minor patch to make the GC count total bytes copied [APPLIED]

2002-04-13 Thread Paolo Molaro
On 04/12/02 Dan Sugalski wrote: FWIW, the numbers were: No JIT: Parrot 866 gen/sec Mono 11 gen/sec JIT: Parrot 1068 gen/sec Mono 114 gen/sec Interesting data: was this taken a while ago? I get different ratios on my machine (PIII 1.1): Parrot JIT: 850 (though the output is

Re: Minor patch to make the GC count total bytes copied [APPLIED]

2002-04-12 Thread Paolo Molaro
On 04/11/02 Dan Sugalski wrote: I'm not sure which is worse--the amount of data we're copying around, or the fact that we eat Mono's lunch while we do so. :-) Could you post the code for the sample? Is it based on the snipped Simon posted a while ago where it used the pattern: string

Re: Mono and Perl6....

2002-02-07 Thread Paolo Molaro
On 02/06/02 Larry Wall wrote: Black pots and kettles aside, they bring up a lot of interesting issues that we have to think about if we're going to be more language-neutral than the CLR. The main issue is that there is a point where too much generality will make the VM too hard to target code

Re: JIT compilation

2001-11-18 Thread Paolo Molaro
On 11/17/01 Dan Sugalski wrote: BTW: we just got our compiler running on linux and compiling a simple program, hopefully by next week it can be used for some more real code generation. Yahoo! Congrats. Are we still slower than you are? :) It's a couple of months I'm in

Re: JIT compilation

2001-11-16 Thread Paolo Molaro
On 11/16/01 Simon Cozens wrote: On Fri, Nov 16, 2001 at 03:32:06PM +0100, Paolo Molaro wrote: And there is someone working on python support in the mono compiler, too. I know, I've just seen. Wouldn't it be really wonderful, Paolo, if someone wrote some Perl bindings for it as well

Re: JIT compilation

2001-11-08 Thread Paolo Molaro
On 11/07/01 Ken Fox wrote: Simon Cozens wrote: ... Mono's work on JIT compilation ... they've got some pretty interesting x86 code generation stuff going on. Mono is doing some very cool stuff, but it's kind of hard to understand at this time. The x86 code generation macros are easy to

Re: JIT compilation

2001-11-08 Thread Paolo Molaro
On 11/08/01 Norbert Bollow wrote: BURG means Bottom-Up Rewrite Grammar... a way to generate optimized code quickly *if* you have plenty of memory available. Maybe, if 32 KB for a large method is plenty (about 600 bytes of IL code): basically all the methods in out corlib are below that size.

Re: Revamping the build system

2001-10-23 Thread Paolo Molaro
On 10/23/01 Simon Cozens wrote: On Thu, Oct 11, 2001 at 03:24:31PM -0400, Dan Sugalski wrote: 1) Build minimal perl 6 with default parameters using platform build tool But platform build tool is going to be 'make' - the alternative is that we maintain and ship every flavour of batch or

Re: Revamping the build system

2001-10-23 Thread Paolo Molaro
On 10/23/01 Simon Cozens wrote: On Tue, Oct 23, 2001 at 12:16:04PM +0200, Paolo Molaro wrote: autoconf automake libtool MVS, MacOS, cross-compilation. cross-compilation is not an issue at all with auto* (I'd say it makes it almost easy to support it). MacOS: I guess any type

Re: An overview of the Parrot interpreter

2001-09-10 Thread Paolo Molaro
On 09/07/01 Dan Sugalski wrote: The only optimizations that interpreter had, were computed goto and allocating the eval stack with alloca() instead of malloc(). Doesn't this really get in the way of threading? You'll chew up great gobs of system stack, and that's a scarce resource when

Re: An overview of the Parrot interpreter

2001-09-06 Thread Paolo Molaro
On 09/05/01 Nick Ing-Simmons wrote: It's easier to generate code for a stack machine True, but it is easier to generate FAST code for a register machine. A stack machine forces a lot of book-keeping either run-time inc/dec of sp, or alternatively compile-time what-is-offset-now stuff. The

Re: An overview of the Parrot interpreter

2001-09-06 Thread Paolo Molaro
On 09/05/01 Dan Sugalski wrote: It's easier to generate code for a stack machine So? Take a look at all the stack-based interpreters. I can name a bunch, including perl. They're all slow. Some slower than others, and perl tends to be the fastest of the bunch, but they're all slow. Have a

Re: An overview of the Parrot interpreter

2001-09-06 Thread Paolo Molaro
On 09/05/01 Hong Zhang wrote: I think we need to get some initial performance characteristics of register machine vs stack machine before we go too far. There is not much points left debating in email list. Unfortunately getting meaningful figures is quite hard, there are so many thing to

Re: An overview of the Parrot interpreter

2001-09-06 Thread Paolo Molaro
On 09/06/01 Dan Sugalski wrote: Okay, I just did a test run, converting my sample program from interpreted to compiled. (Hand-conversion, unfortunately, to C that went through GCC) Went from 2.72M ops/sec to the equivalent of 22.5M ops/sec. And with -O3 on it went to 120M ops/sec. The

Re: An overview of the Parrot interpreter

2001-09-06 Thread Paolo Molaro
On 09/06/01 Dan Sugalski wrote: Then I'm impressed. I expect you've done some things that I haven't yet. The only optimizations that interpreter had, were computed goto and allocating the eval stack with alloca() instead of malloc(). Of course, now it's slower, because I implemented the full

Re: An overview of the Parrot interpreter

2001-09-05 Thread Paolo Molaro
On 09/04/01 Dan Sugalski wrote: Regardless, it's the way we're going to go for now. If it turns out to be a performance dog then we'll go with a stack-based system. Initial indications look pretty good, though. Care to share some numbers/code for that? You're right that optimization

Re: An overview of the Parrot interpreter

2001-09-05 Thread Paolo Molaro
On 09/04/01 Uri Guttman wrote: does it really matter about comprehension? this is not going to be used by the unwashed masses. a stack machine is easier to describe (hence all the freshman CS projects :), but as dan has said, there isn't much mental difference if you have done any serious

Re: An overview of the Parrot interpreter

2001-09-04 Thread Paolo Molaro
On 09/02/01 Simon Cozens wrote: =head1 The Software CPU Like all interpreter systems of its kind, the Parrot interpreter is a virtual machine; this is another way of saying that it is a software CPU. However, unlike other VMs, the Parrot interpreter is designed to more closely mirror

Re: PDD X: Perl API conventions

2001-03-09 Thread Paolo Molaro
On 03/03/01 Damien Neil wrote: All the function names shall begin with the Cperl_ prefix. The only exception is function names that may be used only in the perl core: these names shall begin with the C_perl_ prefix. This will make it possible to export only the perl_* functions from the

Re: PDD 4: Internal data types

2001-03-09 Thread Paolo Molaro
Most won't, honestly. At a guess, 90% of perl's current userbase doesn't care about Unicode for any reason other than XML, The next version of Gtk+ will use utf8. Qt use unicode already. Tk will probably move in the same direction if it doesn't do it already. So most user interface

Re: PDD 4 internal data types, version 1.1

2001-03-09 Thread Paolo Molaro
On 03/05/01 Dan Sugalski wrote: =item Arbitrary precision integers Big integers, or bigints, are arbitrary-length integer numbers. The only limit to the number of digits in a bigint is the lesser of the amount of memory available or the maximum value that can be represented by a CUV. This

Re: Another approach to vtables

2001-02-10 Thread Paolo Molaro
On 02/07/01 Edwin Steiner wrote: [snip] I thought about it once more. Maybe I was confused by the *constant* NATIVE. Are you suggesting a kind of multiple dispatch (first operand selects the vtable, second operand selects the slot in the vtable)? So $dest = $first + $second becomes