Integrated: 8285394: Compiler blackholes can be eliminated due to stale ciMethod::intrinsic_id()
    Aleksey Shipilev 
    shade at openjdk.java.net
       
    Fri Apr 22 17:14:42 UTC 2022
    
    
  
On Thu, 21 Apr 2022 17:02:27 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
> This is seen in some tests: if blackhole method is deemed hot for inlining, then at least C2 would inline it without looking back at its intrinsic status. Which silently breaks blackholes.
> 
> The cause is that there are *two* places where intrinsic ID is recorded. Current blackhole code only writes down blackhole intrinsic ID in `Method::intrinsic_id()`, but we should also set it in `ciMethod::intrinsic_id()`, which is used from C2 inlining code. `ciMethod` is normally populated from `Method::intrinsic_id()`, but it happens too early, before setting up blackhole intrinsic. 
> 
> Additional testing:
>  - [x] Linux x86_64 {fastdebug,release}, wew test fails before the patch, passes with it
>  - [x] Linux x86_64 {fastdebug,release} `compiler/blackhole`
>  - [x] Linux x86_64 fastdebug, sanity microbenchmark corpus run with the patch
This pull request has now been integrated.
Changeset: ce8db2c4
Author:    Aleksey Shipilev <shade at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/ce8db2c40378de01ce35ca37ec315af47974d6d6
Stats:     110 lines in 2 files changed: 107 ins; 3 del; 0 mod
8285394: Compiler blackholes can be eliminated due to stale ciMethod::intrinsic_id()
Reviewed-by: kvn, dlong
-------------
PR: https://git.openjdk.java.net/jdk/pull/8344
    
    
More information about the hotspot-compiler-dev
mailing list