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