< prev index next >
src/share/vm/runtime/deoptimization.hpp
Print this page
*** 72,81 ****
--- 72,82 ----
Reason_age, // nmethod too old; tier threshold reached
Reason_predicate, // compiler generated predicate failed
Reason_loop_limit_check, // compiler generated loop limits check failed
Reason_speculate_class_check, // saw unexpected object class from type speculation
Reason_speculate_null_check, // saw unexpected null from type speculation
+ Reason_speculate_null_assert, // saw unexpected null from type speculation
Reason_rtm_state_change, // rtm state change detected
Reason_unstable_if, // a branch predicted always false was taken
Reason_unstable_fused_if, // fused two ifs that had each one untaken branch. One is now taken.
#if INCLUDE_JVMCI
Reason_aliasing, // optimistic assumption about aliasing failed
*** 363,382 ****
return Reason_null_check; // recorded per BCI as a null check
else if (reason == Reason_speculate_class_check)
return Reason_class_check;
else if (reason == Reason_speculate_null_check)
return Reason_null_check;
else if (reason == Reason_unstable_if)
return Reason_intrinsic;
else if (reason == Reason_unstable_fused_if)
return Reason_range_check;
else
return Reason_none;
}
static bool reason_is_speculate(int reason) {
! if (reason == Reason_speculate_class_check || reason == Reason_speculate_null_check) {
return true;
}
return false;
}
--- 364,387 ----
return Reason_null_check; // recorded per BCI as a null check
else if (reason == Reason_speculate_class_check)
return Reason_class_check;
else if (reason == Reason_speculate_null_check)
return Reason_null_check;
+ else if (reason == Reason_speculate_null_assert)
+ return Reason_null_assert;
else if (reason == Reason_unstable_if)
return Reason_intrinsic;
else if (reason == Reason_unstable_fused_if)
return Reason_range_check;
else
return Reason_none;
}
static bool reason_is_speculate(int reason) {
! if (reason == Reason_speculate_class_check ||
! reason == Reason_speculate_null_check ||
! reason == Reason_speculate_null_assert) {
return true;
}
return false;
}
*** 386,395 ****
--- 391,404 ----
static DeoptReason reason_class_check(bool speculative) {
return speculative ? Deoptimization::Reason_speculate_class_check : Deoptimization::Reason_class_check;
}
+ static DeoptReason reason_null_assert(bool speculative) {
+ return speculative ? Deoptimization::Reason_speculate_null_assert : Deoptimization::Reason_null_assert;
+ }
+
static uint per_method_trap_limit(int reason) {
return reason_is_speculate(reason) ? (uint)PerMethodSpecTrapLimit : (uint)PerMethodTrapLimit;
}
static const char* trap_reason_name(int reason);
< prev index next >