Re: [RfD] parrot run loops

2003-02-03 Thread Leopold Toetsch
Dan Sugalski wrote: At 10:07 AM +0100 1/30/03, Leopold Toetsch wrote: Changing the addressing scheme to opcode offsets relative to code The big problem with this is you're increasing non-local call performance for normal running. I don't think this is a good idea--while you'll save maybe 50

Re: [RfD] parrot run loops

2003-02-03 Thread Dan Sugalski
At 10:07 AM +0100 1/30/03, Leopold Toetsch wrote: Changing the addressing scheme to opcode offsets relative to code start would simplify all kinds of (non local) control flow changes. As real world programs mostly consists of such subroutine calls, these would be simplified a lot (and would then n

Re: [RfD] parrot run loops

2003-02-02 Thread Leopold Toetsch
Jason Gloudon wrote: On Sun, Feb 02, 2003 at 12:46:50AM +0100, Leopold Toetsch wrote: #define IREG(i) interpreter->ctx.int_reg.registers[code_start[offs+i]] Where does the value of code_start coming from ? As stated in my first mail in this thread, code_start could be a auto variable in

Re: [RfD] parrot run loops

2003-02-01 Thread Jason Gloudon
On Sun, Feb 02, 2003 at 12:46:50AM +0100, Leopold Toetsch wrote: > #define IREG(i) interpreter->ctx.int_reg.registers[code_start[offs+i]] Where does the value of code_start coming from ? code_start in an opcode function is not a constant, so the above is really: interpreter->ctx.int_reg.register

Re: [RfD] parrot run loops

2003-02-01 Thread Leopold Toetsch
Jason Gloudon wrote: On Thu, Jan 30, 2003 at 10:07:26AM +0100, Leopold Toetsch wrote: code_start = interpreter->code->base.data; // new syntax while (offs) offs = interp->func_table[*(code_start+offs)](offs, ..) It's unclear to me whether you are saying the opcode functions would sti

Re: [RfD] parrot run loops

2003-02-01 Thread Jason Gloudon
On Thu, Jan 30, 2003 at 10:07:26AM +0100, Leopold Toetsch wrote: > code_start = interpreter->code->base.data; // new syntax > while (offs) > offs = interp->func_table[*(code_start+offs)](offs, ..) It's unclear to me whether you are saying the opcode functions would still be passed the PC

Re: [RfD] parrot run loops

2003-01-31 Thread Leopold Toetsch
Leopold Toetsch wrote: [ mops timings ] C -O3:277 BTW, same (probably alignment caused) timing diffs (gcc 2.95.2): $ for i in $(seq 20); do ./mops; done 328.089625 M op/s 319.657445 M op/s 333.533456 M op/s 371.050336 M op/s 345.721672 M op/s 307.465496 M op/s 364.405245 M op/s 330.797305

Re: [RfD] parrot run loops

2003-01-31 Thread Leopold Toetsch
Steve Fink wrote: I don't really know a whole lot about this area, but I remember I was surprised the first time I looked at this and discovered it was based on pointers instead of offsets. I assumed there was some good reason for it that I didn't know at the time (eg performance), but now I doub

Re: [RfD] parrot run loops

2003-01-31 Thread Steve Fink
I don't really know a whole lot about this area, but I remember I was surprised the first time I looked at this and discovered it was based on pointers instead of offsets. I assumed there was some good reason for it that I didn't know at the time (eg performance), but now I doubt that. Your way see

[RfD] parrot run loops

2003-01-30 Thread Leopold Toetsch
or our runloops are wrong or deep core stuff All run loops get a pointer to the parrot byte code for execution. This has several impacts on the runloop itself and on branching and jumping between instructions. As parrot PASM jumps are expressed by means of opcodes (absolute or relative) all ru