RFR(S): 8235762: JVM crash in SWPointer during C2 compilation

Tobias Hartmann tobias.hartmann at oracle.com
Wed Jan 8 10:09:01 UTC 2020


Hi Felix,

On 16.12.19 11:14, Yangfei (Felix) wrote:
> -- OK.  I will add one assertion immediately before breaking the loop. 

Thanks.

>> - Why do you need max_idx? Isn't is the case that if find_align_to_ref returns
>> NULL, there aren't any comparable memory operations left and it essentially
>> doesn't matter which one you chose?
> 
> -- I was considering minimizing the performance impact of the patch here.  
>   best_align_to_mem_ref is used in SuperWord::align_initial_loop_index for adjusting the pre-loop limit.  
>   For the test case in the webrev, best_align_to_mem_ref was chosen from node 470 (StoreB) and node 431 (StoreL).  
>   The vector width for these two memory operations are different on aarch64 platform: vw = 16 bytes for node 431 and 2 bytes for node 470.  
>   SuperWord::align_initial_loop_index will emit different code sequences for the test case.  
>   The max_idx tells us which memory operation has the biggest vector size.  

Okay, thanks for the details. Could you add a comment that explains this?

>> Also, is it guaranteed that max_idx is always initialized in SuperWord::find_align_to_ref?
> 
> -- Yes, I think so. 
>   When memops is not empty and the memory ops in memops are not comparable, find_align_to_ref will always sets its max_idx.  

Okay.

Thanks,
Tobias


More information about the hotspot-compiler-dev mailing list