This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: java aliasing rules


Jeff Sturm wrote:

>>The optimal, correct code for 
>>Java is really something like:
>>
>>lhz r9, [ps1.f1]
>>addi r9,r9,1
>>sth r9, [ps1.f1]
>>
>
>Wouldn't accessing r9 immediately after the load cause a pipeline stall?
>Assuming an in-order processor?  That would be a significant performance
>hit.
>

Right, its not optimal scheduling, but there's no way to avoid that and 
still have the correct behaviour for NullPointers. And as you suggest, a 
modern processor may be speculativly executing the following loads, so 
it probibly doesn't matter too much.

>Come to think of it, what happens on an out-of-order processor (e.g.
>Alpha EV6) when an instruction traps?  Are preceding instructions 
>guaranteed to have completed?  I'm curious.
>

No matter what re-ordering the hardware does internally, everything must 
be seen to be executed sequentially. So if an instruction traps while 
being executed out of order, any following instructions (eg in the 
signal handler) that depend on results of instructions before the trap, 
must see the results of them having been run.

regards

Bryce.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]