On Tue, 24 May 2022 22:31:16 GMT, Alex Menkov <amen...@openjdk.org> wrote:

>> src/hotspot/share/prims/jvmtiEventController.cpp line 775:
>> 
>>> 773:   env->set_event_callbacks(callbacks, size_of_callbacks);
>>> 774:   // Mask to clear normal event bits.
>>> 775:   const jlong CLEARING_MASK = (1L >> (JVMTI_MIN_EVENT_TYPE_VAL - 
>>> TOTAL_MIN_EVENT_TYPE_VAL)) - 1L;
>> 
>> I don't follow how this works..
>> Should it be "<<" instead of ">>" ?
>
> Maybe it would be clearer to turn off the bits when there are no events:
> 
>   jlong enabled_bits = 
> env->env_event_enable()->_event_callback_enabled.get_bits();
>   for (int ei = JVMTI_MIN_EVENT_TYPE_VAL; ei <= JVMTI_MAX_EVENT_TYPE_VAL; 
> ++ei) {
>       jvmtiEvent evt_t = (jvmtiEvent)ei;
>       if (!env->has_callback(evt_t)) {
>           // clear the bit if there is no callback
>           enabled_bits &= ~JvmtiEventEnabled::bit_for(evt_t);
>       }
>   }

Thanks, Alex! You are right - fixed.
I was stupid enough to confuse the direction. Minimal tracing helps in such 
cases.

-------------

PR: https://git.openjdk.java.net/jdk/pull/8860

Reply via email to