RFR: 8263582: WB_IsMethodCompilable ignores compiler directives [v2]
Christian Hagedorn
chagedorn at openjdk.java.net
Thu Mar 25 15:41:45 UTC 2021
> While playing around with `WB_IsMethodCompilable` together with `compileonly` I ran into some surprising results for methods that should never be compiled (not part of `compileonly`): `isMethodCompilable` returns true instead of false when such an excluded method was not yet tried to be compiled.
>
> The reason for it is that `WB_IsMethodCompilable` directly checks `CompilationPolicy::can_be_compiled()` which calls `Method::is_not_compilable()`. However, the `ExcludeOption` compiler directive is only evaluated lazily upon a compilation attempt. Therefore, if a method was not tried to be compiled, yet, `Method::is_not_compilable()` always returns false, regardless of any set compiler directive.
>
> I therefore suggest to additionally check the `ExcludeOption` in `WB_IsMethodCompilable`. I also cleaned up some wrong use of `CompLevel_any` and `CompLevel_all` as suggested by @veresov: `CompLevel_any` should only be used to query the state as in `is_*()` methods and `CompLevel_all` when changing the state is in `set_*()` methods.
>
> Thanks,
> Christian
Christian Hagedorn has updated the pull request incrementally with one additional commit since the last revision:
fix typo
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/3195/files
- new: https://git.openjdk.java.net/jdk/pull/3195/files/952049c5..67e31f21
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=3195&range=01
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=3195&range=00-01
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
Patch: https://git.openjdk.java.net/jdk/pull/3195.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/3195/head:pull/3195
PR: https://git.openjdk.java.net/jdk/pull/3195
More information about the hotspot-dev
mailing list