Mercurial > hg > graal-jvmci-8
comparison src/share/vm/runtime/mutexLocker.hpp @ 14318:1020b892787b
Merge
author | hseigel |
---|---|
date | Sun, 02 Feb 2014 15:31:40 -0500 |
parents | 63a4eb8bcd23 |
children | 8a9bb7821e28 |
comparison
equal
deleted
inserted
replaced
14317:b59507f713e0 | 14318:1020b892787b |
---|---|
41 #endif | 41 #endif |
42 | 42 |
43 // Mutexes used in the VM. | 43 // Mutexes used in the VM. |
44 | 44 |
45 extern Mutex* Patching_lock; // a lock used to guard code patching of compiled code | 45 extern Mutex* Patching_lock; // a lock used to guard code patching of compiled code |
46 extern Monitor* SystemDictionary_lock; // a lock on the system dictonary | 46 extern Monitor* SystemDictionary_lock; // a lock on the system dictionary |
47 extern Mutex* PackageTable_lock; // a lock on the class loader package table | 47 extern Mutex* PackageTable_lock; // a lock on the class loader package table |
48 extern Mutex* CompiledIC_lock; // a lock used to guard compiled IC patching and access | 48 extern Mutex* CompiledIC_lock; // a lock used to guard compiled IC patching and access |
49 extern Mutex* InlineCacheBuffer_lock; // a lock used to guard the InlineCacheBuffer | 49 extern Mutex* InlineCacheBuffer_lock; // a lock used to guard the InlineCacheBuffer |
50 extern Mutex* VMStatistic_lock; // a lock used to guard statistics count increment | 50 extern Mutex* VMStatistic_lock; // a lock used to guard statistics count increment |
51 extern Mutex* JNIGlobalHandle_lock; // a lock on creating JNI global handles | 51 extern Mutex* JNIGlobalHandle_lock; // a lock on creating JNI global handles |
343 // | 343 // |
344 // A special MutexLocker that allows: | 344 // A special MutexLocker that allows: |
345 // - reentrant locking | 345 // - reentrant locking |
346 // - locking out of order | 346 // - locking out of order |
347 // | 347 // |
348 // Only too be used for verify code, where we can relaxe out dead-lock | 348 // Only to be used for verify code, where we can relax out dead-lock |
349 // dection code a bit (unsafe, but probably ok). This code is NEVER to | 349 // detection code a bit (unsafe, but probably ok). This code is NEVER to |
350 // be included in a product version. | 350 // be included in a product version. |
351 // | 351 // |
352 class VerifyMutexLocker: StackObj { | 352 class VerifyMutexLocker: StackObj { |
353 private: | 353 private: |
354 Monitor * _mutex; | 354 Monitor * _mutex; |
356 public: | 356 public: |
357 VerifyMutexLocker(Monitor * mutex) { | 357 VerifyMutexLocker(Monitor * mutex) { |
358 _mutex = mutex; | 358 _mutex = mutex; |
359 _reentrant = mutex->owned_by_self(); | 359 _reentrant = mutex->owned_by_self(); |
360 if (!_reentrant) { | 360 if (!_reentrant) { |
361 // We temp. diable strict safepoint checking, while we require the lock | 361 // We temp. disable strict safepoint checking, while we require the lock |
362 FlagSetting fs(StrictSafepointChecks, false); | 362 FlagSetting fs(StrictSafepointChecks, false); |
363 _mutex->lock(); | 363 _mutex->lock(); |
364 } | 364 } |
365 } | 365 } |
366 | 366 |