RFR: 8346123: [REDO] NMT should not use ThreadCritical [v11]

Robert Toyonaga duke at openjdk.org
Mon Dec 23 14:30:43 UTC 2024


On Sat, 21 Dec 2024 07:16:22 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

>> Robert Toyonaga has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   move boostrapping_done flag into Mutex from MutexLocker
>
> src/hotspot/share/nmt/threadStackTracker.cpp line 55:
> 
>> 53:   align_thread_stack_boundaries_inward(base, size);
>> 54: 
>> 55:   MemTracker::MemTracker::NmtVirtualMemoryLocker nvml;
> 
> Too many "MemTracker"s here?

thank you for spotting. I'll remove that

> src/hotspot/share/nmt/virtualMemoryTracker.cpp line 632:
> 
>> 630:     if (Mutex::is_bootstrapping_done()) {
>> 631:       assert_lock_strong(NmtVirtualMemory_lock);
>> 632:     }
> 
> It seems like this can use `MemTracker::assert_locked()`, since that is conditioned on bootstrapping state.

`assert_lock_strong`  skips checking the lock ownership if `DebuggingContext::is_enabled() || VMError::is_error_reported()`. `MemTracker::assert_locked()` does not do that.  Is that ok?

> src/hotspot/share/runtime/mutex.hpp line 222:
> 
>> 220:   }
>> 221:  private:
>> 222:   static bool _bootstrapping_done;
> 
> A description of what these mean would be nice. It seems to be mutex_init completed + threading
> initialization completed?

Yes, that's right. I'll add a comment describing this.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/22745#discussion_r1895809641
PR Review Comment: https://git.openjdk.org/jdk/pull/22745#discussion_r1895811421
PR Review Comment: https://git.openjdk.org/jdk/pull/22745#discussion_r1895812737


More information about the serviceability-dev mailing list