Re: De Morgan's theorum

2002-02-20 Thread Andrew J Bromage
G'day all. On Tue, Feb 19, 2002 at 09:15:02PM +, Nicholas Clark wrote: > Would it gain us much implementing De Morgan's theorem in the peephole > optimiser? I suspect that most code generators for Parrot will translate LOGOPs as jumps (i.e. the way most compilers do it), in which case the D

Optimizer: Jeff, where are you?

2002-03-23 Thread Andrew J Bromage
G'day all. I'm working on the Optimizer (adding a new intermediate form to allow for more aggressive optimization) but mail to Jeff Goff seems to be bouncing. Does anyone know where he is? Cheers, Andrew Bromage

[TENTATIVE PATCH] Label arg type

2002-04-06 Thread Andrew J Bromage
G'day all. The optimizer needs to know what operands are INTs and which are actually code targets in disguise in order to be able to restructure code. The patch below gives one simple solution, but I'm not sure that it's the "best". I suspect that code processors (including optimizers) might ne

Re: pasm.el and looping ops

2002-04-16 Thread Andrew J Bromage
G'day all. On Tue, Apr 16, 2002 at 10:52:05PM +0200, Marco Baringer wrote: > regarding (2): vector processors would certainly benefit from having > loops (espicially the ones over arrays of similar things (a large > percentage of real world loops)) explicitly labeled as such. A few of comments:

[PATCH] intconst parameter type

2002-04-17 Thread Andrew J Bromage
G'day all. This patch introduces a new op parameter type "inconst", which is like "in" except that it only produces const versions of the op (i.e. it will not take values from registers). This is mostly for the benefit of branch targets. The "feature" of using register values as branch targets

Re: [PATCH] intconst parameter type

2002-04-18 Thread Andrew J Bromage
G'day all. On Thu, Apr 18, 2002 at 09:35:11AM -0400, Jason Gloudon wrote: > Having registers provide the destination for some branches makes it > possible to generate code that eliminates most of the comparisions > needed to implement C style case/switch statements, so this is not a > useless fe

Re: [PATCH] intconst parameter type

2002-04-18 Thread Andrew J Bromage
G'day all. On Thu, Apr 18, 2002 at 09:09:59PM -0400, Dan Sugalski wrote: > I've applied this, with the exception of the branch and bsr ops. At > the moment, I agree--I can't see any case where "if" or "gte" needs > to have a variable target. (I can see it for branch, bsr, jump, and > jsr, as

[PATCH] Op metadata

2002-04-18 Thread Andrew J Bromage
G'day all. This patch allows op-writers to store optional metadata to be associated along with an op. Very simple key-value stuff at the moment; may get fancier later. Once again, this is mostly for the optimizer's benefit, so you can note things like if an op affects the state of the world, or

Re: [PATCH] Op metadata

2002-04-18 Thread Andrew J Bromage
G'day all. On Thu, Apr 18, 2002 at 11:31:32PM -0400, Dan Sugalski wrote: > Interesting. Could you give an example of how an op with metadata would look? Sure. Here's some of my experimenting with what is the right kind of metadata to attach. Brief glossary: - CANNOT_FALL_THROUGH mean

Re: [PATCH] Op metadata

2002-04-18 Thread Andrew J Bromage
G'day all. On Fri, Apr 19, 2002 at 12:44:49AM -0400, Dan Sugalski wrote: > Ah. Hmmm. Well, we're already attaching some metadata to ops in a > different way--that's what the op and inline keywords are doing. For > metadata that use parameters I can see a scheme like you're > proposing, though

Re: Call stack manipulation?

2002-04-18 Thread Andrew J Bromage
G'day all. On Fri, Apr 19, 2002 at 07:06:04AM +0100, Piers Cawley wrote: > If I'm going to be doing tail call optimization > (and I can't call it scheme if I don't) then my first thought was as > follows. > > # This is a tail call > > branch FOO_tail > ... > > #

Re: Call stack manipulation?

2002-04-20 Thread Andrew J Bromage
G'day all. On Fri, Apr 19, 2002 at 09:55:46AM +0100, Piers Cawley wrote: > It's fine for partial continuations certainly, but less fine if you > want to implement full continations which require you to save the > state of the entire stack. I was hoping I'd find a way to do this > without having

Re: [PATCH] Op metadata

2002-04-20 Thread Andrew J Bromage
G'day all. On Fri, Apr 19, 2002 at 05:28:12PM -0300, Daniel Grunblatt wrote: > Add me to the list, because I'm writting the jit optimizer and ran into > the same problem, we must add some metadata otherwise I will end up > hard-coding all the information deep into the optimizer and that is a Bad

Re: [PATCH] intconst parameter type

2002-04-20 Thread Andrew J Bromage
G'day all. On Fri, Apr 19, 2002 at 01:08:46PM -0700, Steve Fink wrote: > Should it be all one keyword, or should 'const' be an orthogonal > modifier? IMO, one modifier, because "const" doesn't make sense on any direction but "in". > > - Nobody is likely to use it any time soon. > > I will

Re: [PATCH] intconst parameter type

2002-04-20 Thread Andrew J Bromage
G'day. On Sat, Apr 20, 2002 at 10:06:10PM -0700, Steve Fink wrote: > Do we want to restrict subs to a single entry point? (for example, > what if you want one "initial" entry point, and one "resume" entry > point that figures out where processing left off?) Not necessarily. These are just idea

Re: [PATCH] Arg direction information

2002-04-21 Thread Andrew J Bromage
G'day all. On Sun, Apr 21, 2002 at 08:24:36PM -0300, Daniel Grunblatt wrote: > Can you store this info in the 'op_info_table' too? Yes. CVSmeisters: Please ignore this patch. A replacement one will be available once "make test" is finished. Cheers, Andrew Bromage

[PATCH] Arg direction info, version 2

2002-04-21 Thread Andrew J Bromage
G'day all. Adds argument direction information into Parrot::Op and the op_info_table. Cheers, Andrew Bromage Index: ops2c.pl === RCS file: /cvs/public/parrot/ops2c.pl,v retrieving revision 1.22 diff -u -r1.22 ops2c.pl --- ops2c.pl

Re: [PATCH] intconst parameter type

2002-04-22 Thread Andrew J Bromage
G'day all. On Thu, Apr 18, 2002 at 09:09:59PM -0400, Dan Sugalski wrote: > >> I've applied this, with the exception of the branch and bsr ops. [...] On Mon, Apr 22, 2002 at 11:01:35AM -0400, Dan Sugalski wrote: > The branches are relative to the current PC, the jumps take > absolute addresse

Re: Subroutines...

2002-04-22 Thread Andrew J Bromage
G'day all. On Mon, Apr 22, 2002 at 04:31:32PM -0400, Dan Sugalski wrote: > 3) We're having a new rule--you may *not* take a continuation from > within an opcode function! This is probably one of those "Well, Duh!" > things but better to have it up front. I see why you say this, but I'm not su

Re: Mutable vs immutable strings

2002-04-23 Thread Andrew J Bromage
G'day all. On Tue, Apr 23, 2002 at 01:18:23PM -0700, Brent Dax wrote: > Three questions: > > 1. Which'll be faster? It depends on the application, but my money is on mutable strings built on top of an immutable buffer. That's based on looking at my own string-based Perl code, a lot of which i

Re: Subroutines...

2002-04-25 Thread Andrew J Bromage
G'day all. On Mon, Apr 22, 2002 at 01:52:30PM -0700, Brent Dax wrote: > > How about we instead declare that all subs have One True Entry Point, > > and the sub does whatever is needed there? Normal subs can just set up > > scoping and jump to the beginning of the sub's body; coroutines retrieve

Re: Subroutines...

2002-04-26 Thread Andrew J Bromage
G'day all. On Fri, Apr 26, 2002 at 08:16:27AM -0400, Melvin Smith wrote: > I also vote for reserving some caller-save registers to make > arg passing faster, however, reserving 16 is probably useless, except > for symmetry. > > I think most texts agree that 5 or so are about all you need. Fair

Re: Please rename 'but' to 'has'.

2002-04-26 Thread Andrew J Bromage
G'day all. On Fri, Apr 26, 2002 at 09:45:24AM -0700, Larry Wall wrote: > Gee, maybe I should patent this. Actually, you're binary searching the Stern-Brocot tree representation of rational numbers. In fact, if you have arbitrary precision integers, you can convert these strings into rational n

Re: Subroutines...

2002-04-28 Thread Andrew J Bromage
G'day all. On Sat, Apr 27, 2002 at 07:00:17AM +0100, Piers Cawley wrote: > I'm trying to see how, if you want genuine continuations and/or tail > call optimization, you're going to get away with anything but 'caller > saves everything important to it', and what do you know, I > can't. If you ha

Re: Subroutines...

2002-04-28 Thread Andrew J Bromage
G'day all. On Sun, Apr 28, 2002 at 11:44:04AM -0400, Dan Sugalski wrote: > We're going caller-save. I think I made this declaration before, but > now it's backed up with pure PDD goodness. :) The first thing to realise is that this violates the principle of "callee does everything important t

Re: Subroutines...

2002-04-28 Thread Andrew J Bromage
G'day all. On Sun, Apr 28, 2002 at 09:49:35PM -0400, Melvin Smith wrote: > I don't think I and Andrew were saying we shouldn't do caller-save, we > were just discussing that the calling convention (read activation record of > a subroutine) should support the common optimization of passing args >

Re: Subroutines...

2002-04-28 Thread Andrew J Bromage
G'day all. On Sun, Apr 28, 2002 at 10:26:12PM -0400, Melvin Smith wrote: > Ok, agreed. Sorry for speaking for you. Not a problem. Having people try to speak for you can actually clarify your thoughts, or so I've found. > Regarding performance, a decent compiler should be able to > analyze a m

Re: Subroutines...

2002-04-29 Thread Andrew J Bromage
G'day all. On Mon, Apr 29, 2002 at 07:57:08AM +0100, Piers Cawley wrote: > Remember that the caller only has to save the stuff that is important > to it, after all, anything that might be of importance to *its* > callers will already have been saved. If the callee saves then it's > going to be d

Re: Subroutines...

2002-04-29 Thread Andrew J Bromage
G'day all. On Mon, Apr 29, 2002 at 10:53:40AM -0400, Dan Sugalski wrote: > Welcome to my world. They're all bad ideas in some way or, rather, > they're all equally as good. That's definitely true. :-) I should also point out that for Perl, all this is moot. Current Perl semantics require tha

Re: Subroutines...

2002-04-29 Thread Andrew J Bromage
G'day all. On Mon, Apr 29, 2002 at 11:59:45PM +0100, Tim Bunce wrote: > [ I'm playing devils advocate for a while longer as I'm not 100% convinced ] Understood. > Isn't compiler convienience a (the?) major issue here? I wouldn't call it a "major issue". I think of it as a constraint. The ma

Suggestion: register liveness information

2001-09-24 Thread Andrew J Bromage
G'day all. I have a suggestion for allowing parrot implementations to execute code more efficiently. Add an "instruction" or other annotation which denotes what registers are "live" at some point in the code. The intended usage is that compilers which wish to generate this information generate

Re: Suggestion: register liveness information

2001-09-24 Thread Andrew J Bromage
G'day all. On Mon, Sep 24, 2001 at 10:27:24AM -0400, Michael Maraist wrote: > Does it have to be in the instruction stream to be useful? No, of course not. I said "instruction" because that's how I saw it implemented last, but that was in a compiler backend, not in a virtual machine specificat

Re: Parrot vs JVM

2001-11-12 Thread Andrew J Bromage
G'day all. On Mon, Nov 12, 2001 at 03:37:08PM +, Leon Brocard wrote: > I forgot to point out that details of the JVM are available [...] I realise that this _is_ a major difference between Parrot and the JVM, but you don't need to rub it in. :-) Cheers, Andrew Bromage

Re: What is wrong with GCC's register transfer language?

2001-12-03 Thread Andrew J Bromage
G'day all. On Mon, Dec 03, 2001 at 01:27:33PM -0500, Adam Turoff wrote: > =head1 Parrot : A Cross-Language Virtual Machine Architecture > =head2 What is Parrot? > =head2 How does this relate to .NET? > =head2 How does this relate to Mono? > =head2 Why redesign a VM

Re: Parrot FAQ

2001-12-05 Thread Andrew J Bromage
G'day all. On Wed, Dec 05, 2001 at 01:23:34PM -0500, Dan Sugalski wrote: > Besides, the only p-code machine I could think of was UCSD Pascal running > on the Apple IIs, and that seemed a bit old to reference. FWIW, in the last days of Microsoft's 16-bit C compiler (at least V7 and V8), it used