28 #include "memory/allocation.hpp" 29 #include "runtime/mutex.hpp" 30 31 // Mutexes used in the VM. 32 33 extern Mutex* Patching_lock; // a lock used to guard code patching of compiled code 34 extern Monitor* SystemDictionary_lock; // a lock on the system dictionary 35 extern Mutex* PackageTable_lock; // a lock on the class loader package table 36 extern Mutex* CompiledIC_lock; // a lock used to guard compiled IC patching and access 37 extern Mutex* InlineCacheBuffer_lock; // a lock used to guard the InlineCacheBuffer 38 extern Mutex* VMStatistic_lock; // a lock used to guard statistics count increment 39 extern Mutex* JNIGlobalHandle_lock; // a lock on creating JNI global handles 40 extern Mutex* JNIHandleBlockFreeList_lock; // a lock on the JNI handle block free list 41 extern Mutex* MemberNameTable_lock; // a lock on the MemberNameTable updates 42 extern Mutex* JmethodIdCreation_lock; // a lock on creating JNI method identifiers 43 extern Mutex* JfieldIdCreation_lock; // a lock on creating JNI static field identifiers 44 extern Monitor* JNICritical_lock; // a lock used while entering and exiting JNI critical regions, allows GC to sometimes get in 45 extern Mutex* JvmtiThreadState_lock; // a lock on modification of JVMTI thread data 46 extern Monitor* JvmtiPendingEvent_lock; // a lock on the JVMTI pending events list 47 extern Monitor* Heap_lock; // a lock on the heap 48 extern Mutex* ExpandHeap_lock; // a lock on expanding the heap 49 extern Mutex* AdapterHandlerLibrary_lock; // a lock on the AdapterHandlerLibrary 50 extern Mutex* SignatureHandlerLibrary_lock; // a lock on the SignatureHandlerLibrary 51 extern Mutex* VtableStubs_lock; // a lock on the VtableStubs 52 extern Mutex* SymbolTable_lock; // a lock on the symbol table 53 extern Mutex* StringTable_lock; // a lock on the interned string table 54 extern Monitor* StringDedupQueue_lock; // a lock on the string deduplication queue 55 extern Mutex* StringDedupTable_lock; // a lock on the string deduplication table 56 extern Monitor* CodeCache_lock; // a lock on the CodeCache, rank is special, use MutexLockerEx 57 extern Mutex* MethodData_lock; // a lock on installation of method data 58 extern Mutex* TouchedMethodLog_lock; // a lock on allocation of LogExecutedMethods info 59 extern Mutex* RetData_lock; // a lock on installation of RetData inside method data 60 extern Mutex* DerivedPointerTableGC_lock; // a lock to protect the derived pointer table 61 extern Monitor* VMOperationQueue_lock; // a lock on queue of vm_operations waiting to execute 62 extern Monitor* VMOperationRequest_lock; // a lock on Threads waiting for a vm_operation to terminate 63 extern Monitor* Safepoint_lock; // a lock used by the safepoint abstraction 64 extern Monitor* Threads_lock; // a lock on the Threads table of active Java threads 65 // (also used by Safepoints too to block threads creation/destruction) 66 extern Monitor* CGC_lock; // used for coordination between 67 // fore- & background GC threads. | 28 #include "memory/allocation.hpp" 29 #include "runtime/mutex.hpp" 30 31 // Mutexes used in the VM. 32 33 extern Mutex* Patching_lock; // a lock used to guard code patching of compiled code 34 extern Monitor* SystemDictionary_lock; // a lock on the system dictionary 35 extern Mutex* PackageTable_lock; // a lock on the class loader package table 36 extern Mutex* CompiledIC_lock; // a lock used to guard compiled IC patching and access 37 extern Mutex* InlineCacheBuffer_lock; // a lock used to guard the InlineCacheBuffer 38 extern Mutex* VMStatistic_lock; // a lock used to guard statistics count increment 39 extern Mutex* JNIGlobalHandle_lock; // a lock on creating JNI global handles 40 extern Mutex* JNIHandleBlockFreeList_lock; // a lock on the JNI handle block free list 41 extern Mutex* MemberNameTable_lock; // a lock on the MemberNameTable updates 42 extern Mutex* JmethodIdCreation_lock; // a lock on creating JNI method identifiers 43 extern Mutex* JfieldIdCreation_lock; // a lock on creating JNI static field identifiers 44 extern Monitor* JNICritical_lock; // a lock used while entering and exiting JNI critical regions, allows GC to sometimes get in 45 extern Mutex* JvmtiThreadState_lock; // a lock on modification of JVMTI thread data 46 extern Monitor* JvmtiPendingEvent_lock; // a lock on the JVMTI pending events list 47 extern Monitor* Heap_lock; // a lock on the heap 48 extern Monitor* ShenandoahHeap_lock; // a lock on the heap, used by ShenandoahGC when evacuating at a safepoint 49 extern Monitor* ShenandoahFullGC_lock; // a monitor to wait/notify the Shenandoah background thread on full-GC requests 50 extern Monitor* ShenandoahJNICritical_lock; // a monitor to wait/notify the Shenandoah background thread on full-GC requests 51 extern Monitor* ShenandoahMemProtect_lock; // ShenandoahGC uses this for memory protection to verify operations on the heap. 52 extern Mutex* ExpandHeap_lock; // a lock on expanding the heap 53 extern Mutex* AdapterHandlerLibrary_lock; // a lock on the AdapterHandlerLibrary 54 extern Mutex* SignatureHandlerLibrary_lock; // a lock on the SignatureHandlerLibrary 55 extern Mutex* VtableStubs_lock; // a lock on the VtableStubs 56 extern Mutex* SymbolTable_lock; // a lock on the symbol table 57 extern Mutex* StringTable_lock; // a lock on the interned string table 58 extern Monitor* StringDedupQueue_lock; // a lock on the string deduplication queue 59 extern Mutex* StringDedupTable_lock; // a lock on the string deduplication table 60 extern Monitor* CodeCache_lock; // a lock on the CodeCache, rank is special, use MutexLockerEx 61 extern Mutex* MethodData_lock; // a lock on installation of method data 62 extern Mutex* TouchedMethodLog_lock; // a lock on allocation of LogExecutedMethods info 63 extern Mutex* RetData_lock; // a lock on installation of RetData inside method data 64 extern Mutex* DerivedPointerTableGC_lock; // a lock to protect the derived pointer table 65 extern Monitor* VMOperationQueue_lock; // a lock on queue of vm_operations waiting to execute 66 extern Monitor* VMOperationRequest_lock; // a lock on Threads waiting for a vm_operation to terminate 67 extern Monitor* Safepoint_lock; // a lock used by the safepoint abstraction 68 extern Monitor* Threads_lock; // a lock on the Threads table of active Java threads 69 // (also used by Safepoints too to block threads creation/destruction) 70 extern Monitor* CGC_lock; // used for coordination between 71 // fore- & background GC threads. |