gforth
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [gforth] Performance anomality with dynamic superinstructions on MIP


From: Anton Ertl
Subject: Re: [gforth] Performance anomality with dynamic superinstructions on MIPSel
Date: Mon, 24 Mar 2014 11:02:46 +0100
User-agent: Mutt/1.5.18 (2008-05-17)

On Mon, Mar 24, 2014 at 03:17:41AM +0100, Bernd Paysan wrote:
> What did the trick?  Using FIRST_NEXT actually in after_last:, this is a 
> dummy 
> for getting the tail of the last address, we can put anything we like there.  
> Doing FIRST_NEXT there makes it a noop, and since there's nothing to move 
> into 
> the goto, it stays as small as it should.

But does that work with the versions of GCC that combine all the
indirect gotos into one?  We actually cut the primitives into the
pre-goto part and the goto part, and then stick the first goto * there
to work around that.  And IIRC these versions of gcc jump to the first
goto *.

The following solutions suggest themselves to me:

1) Check whether the goto part of the primitive itself is relocatable.
If it is, use it.  If not, use the shortest goto part that is
relocatable.

2) Just like for checking for registers and long longs, try whether
the engine works without the workaround mentioned above, and only
employ the workaround if it doesn't.

- anton




reply via email to

[Prev in Thread] Current Thread [Next in Thread]