Implicit null-check in hot-loop?

Benedikt Wedenik benedikt.wedenik at theobroma-systems.com
Wed May 27 10:46:32 UTC 2015


Oh!

Thanks :) So then it's not so bad, cause it is (I guess) obligatory.

Do you have any idea why this loop does not get unrolled?

Benedikt.

On 27 May 2015, at 12:36, Andrew Haley <aph at redhat.com> wrote:

> On 05/27/2015 11:27 AM, Benedikt Wedenik wrote:
>> 
>> In the hot-loop there is this “ldr” which looked a little “strange” at the first glance.
>> I think that this load is a null-check? Is that the case?
> 
> No.  It's a safepoint check.  HotSpot has to insert one of these because
> it can't prove that the loop is reasonably short-lived.
> 
>> I also investigated the generated code on x86 which is quite similar, but instead of a load, they are
>> using the “test”-instruction which performs an “and” but only sets the flags discarding the result.
>> Is there any similar instruction available on aarch64 or is this already the closest solution?
> 
> Closest to what?  A load to XZR is the best solution: it does not hit
> the flags.  x86 cannot do this.
> 
> It looks like great code.
> 
> Andrew.
> 



More information about the hotspot-compiler-dev mailing list