Integrated: 8278871: [JVMCI] assert((uint)reason < 2* _trap_hist_limit) failed: oob
Doug Simon
dnsimon at openjdk.java.net
Sat Dec 18 06:53:06 UTC 2021
On Wed, 15 Dec 2021 23:11:58 GMT, Doug Simon <dnsimon at openjdk.org> wrote:
> This PR fixes a discrepancy between `MethodData::_trap_hist_list` and `Deoptimization::Reason_LIMIT` in terms of JVMCI specific usage.
>
> JVMCI doubles the size of the deopt history for a method so that it can distinguish deopts in a normal method compilation from deopts in an OSR compilation:
>
> union {
> intptr_t _align;
> u1 _array[JVMCI_ONLY(2 *) MethodData::_trap_hist_limit];
> } _trap_hist;
>
>
> To access the history for OSR deopts, the index for a deopt reason needs to be adjusted to the upper half of the history array. The amount used for the adjustment was incorrect and this PR fixes it:
>
>
> if (update_total_trap_count) {
> uint idx = reason;
> #if INCLUDE_JVMCI
> if (is_osr) {
> idx += Reason_TRAP_HISTORY_LENGTH;
> }
> #endif
>
>
> I introduced `Reason_TRAP_HISTORY_LENGTH` as a replacement for `25 JVMCI_ONLY(+5), // decoupled from Deoptimization::Reason_LIMIT` as this decoupling is unnecessary (as dangerous) as far as I can see.
This pull request has now been integrated.
Changeset: 6f0e8da6
Author: Doug Simon <dnsimon at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/6f0e8da6d3bef340299e48977d5e17d05eabe682
Stats: 21 lines in 5 files changed: 9 ins; 4 del; 8 mod
8278871: [JVMCI] assert((uint)reason < 2* _trap_hist_limit) failed: oob
Reviewed-by: kvn, never, dlong
-------------
PR: https://git.openjdk.java.net/jdk/pull/6855
More information about the hotspot-dev
mailing list