@@ -113,9 +113,8 @@ impl LockState {
113
113
/// update the per-thread state accordingly.
114
114
///
115
115
/// Return the `LockState` that must be restored when this thread is released.
116
- fn acquire ( new_rank : LockRank ) -> LockState {
116
+ fn acquire ( new_rank : LockRank , location : & ' static Location < ' static > ) -> LockState {
117
117
let state = LOCK_STATE . get ( ) ;
118
- let location = Location :: caller ( ) ;
119
118
// Initially, it's fine to acquire any lock. So we only
120
119
// need to check when `last_acquired` is `Some`.
121
120
if let Some ( ( ref last_rank, ref last_location) ) = state. last_acquired {
@@ -168,7 +167,7 @@ impl<T> Mutex<T> {
168
167
169
168
#[ track_caller]
170
169
pub fn lock ( & self ) -> MutexGuard < T > {
171
- let saved = acquire ( self . rank ) ;
170
+ let saved = acquire ( self . rank , Location :: caller ( ) ) ;
172
171
MutexGuard {
173
172
inner : self . inner . lock ( ) ,
174
173
saved,
@@ -249,16 +248,18 @@ impl<T> RwLock<T> {
249
248
}
250
249
}
251
250
251
+ #[ track_caller]
252
252
pub fn read ( & self ) -> RwLockReadGuard < T > {
253
- let saved = acquire ( self . rank ) ;
253
+ let saved = acquire ( self . rank , Location :: caller ( ) ) ;
254
254
RwLockReadGuard {
255
255
inner : self . inner . read ( ) ,
256
256
saved,
257
257
}
258
258
}
259
259
260
+ #[ track_caller]
260
261
pub fn write ( & self ) -> RwLockWriteGuard < T > {
261
- let saved = acquire ( self . rank ) ;
262
+ let saved = acquire ( self . rank , Location :: caller ( ) ) ;
262
263
RwLockWriteGuard {
263
264
inner : self . inner . write ( ) ,
264
265
saved,
0 commit comments