RFR: 8308614: Enabling JVMTI ClassLoad event slows down vthread creation by factor 10 [v4]

Serguei Spitsyn sspitsyn at openjdk.org
Thu Nov 30 21:21:17 UTC 2023


On Thu, 30 Nov 2023 17:35:57 GMT, Daniel D. Daugherty <dcubed at openjdk.org> wrote:

>> Serguei Spitsyn has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   review: remove newly added ThreadsListHandle from enter_interp_only_mode
>
> src/hotspot/share/prims/jvmtiThreadState.cpp line 536:
> 
>> 534:     JvmtiEventController::thread_started(thread);
>> 535:   }
>> 536:   if (JvmtiExport::should_post_vthread_start()) {
> 
> Why is this check: `if (JvmtiExport::can_support_virtual_threads()) {` removed?

It is because the `JvmtiExport::should_post_vthread_start()` returns `true` only if the `JvmtiExport::can_support_virtual_threads()` returns `true`.

The JVMTI `SetEventNotificationMode()` function checks for a required event capability by using the `JvmtiUtil::has_event_capability()` function that is defined in the `jvmtiEnter.cpp` generated with the `jvmtiEnter.xsl` script.

It looks like this:

// Check Event Capabilities
bool JvmtiUtil::has_event_capability(jvmtiEvent event_type, const jvmtiCapabilities* capabilities_ptr) {
  switch (event_type) {
    . . .
    case JVMTI_EVENT_VIRTUAL_THREAD_START:
      return capabilities_ptr->can_support_virtual_threads != 0;
    case JVMTI_EVENT_VIRTUAL_THREAD_END:
      return capabilities_ptr->can_support_virtual_threads != 0;
    . . .

> src/hotspot/share/prims/jvmtiThreadState.cpp line 552:
> 
>> 550:     JvmtiExport::post_vthread_unmount(vthread);
>> 551:   }
>> 552:   if (JvmtiExport::can_support_virtual_threads()) {
> 
> Why is this check: if (JvmtiExport::can_support_virtual_threads()) { removed?

The same reason as above. Thank you for checking this.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16686#discussion_r1411269738
PR Review Comment: https://git.openjdk.org/jdk/pull/16686#discussion_r1411271722


More information about the serviceability-dev mailing list