42 _retryable(true), |
42 _retryable(true), |
43 _failure_reason(NULL), |
43 _failure_reason(NULL), |
44 _failure_reason_on_C_heap(false) { |
44 _failure_reason_on_C_heap(false) { |
45 // Get Jvmti capabilities under lock to get consistent values. |
45 // Get Jvmti capabilities under lock to get consistent values. |
46 MutexLocker mu(JvmtiThreadState_lock); |
46 MutexLocker mu(JvmtiThreadState_lock); |
|
47 _jvmti_redefinition_count = JvmtiExport::redefinition_count(); |
47 _jvmti_can_hotswap_or_post_breakpoint = JvmtiExport::can_hotswap_or_post_breakpoint() ? 1 : 0; |
48 _jvmti_can_hotswap_or_post_breakpoint = JvmtiExport::can_hotswap_or_post_breakpoint() ? 1 : 0; |
48 _jvmti_can_access_local_variables = JvmtiExport::can_access_local_variables() ? 1 : 0; |
49 _jvmti_can_access_local_variables = JvmtiExport::can_access_local_variables() ? 1 : 0; |
49 _jvmti_can_post_on_exceptions = JvmtiExport::can_post_on_exceptions() ? 1 : 0; |
50 _jvmti_can_post_on_exceptions = JvmtiExport::can_post_on_exceptions() ? 1 : 0; |
50 _jvmti_can_pop_frame = JvmtiExport::can_pop_frame() ? 1 : 0; |
51 _jvmti_can_pop_frame = JvmtiExport::can_pop_frame() ? 1 : 0; |
51 } |
52 } |
52 |
53 |
53 bool JVMCICompileState::jvmti_state_changed() const { |
54 bool JVMCICompileState::jvmti_state_changed() const { |
|
55 // Some classes were redefined |
|
56 if (jvmti_redefinition_count() != JvmtiExport::redefinition_count()) { |
|
57 return true; |
|
58 } |
54 if (!jvmti_can_access_local_variables() && |
59 if (!jvmti_can_access_local_variables() && |
55 JvmtiExport::can_access_local_variables()) { |
60 JvmtiExport::can_access_local_variables()) { |
56 return true; |
61 return true; |
57 } |
62 } |
58 if (!jvmti_can_hotswap_or_post_breakpoint() && |
63 if (!jvmti_can_hotswap_or_post_breakpoint() && |