@@ -68,14 +68,7 @@ struct LockMetadata {
68
68
69
69
struct LockDep {
70
70
lock : Arc < LockMetadata > ,
71
- lockdep_trace : Option < Backtrace > ,
72
- }
73
- impl LockDep {
74
- /// Note that `Backtrace::new()` is rather expensive so we rely on the caller to fill in the
75
- /// `lockdep_backtrace` field after ensuring we need it.
76
- fn new_without_bt ( lock : & Arc < LockMetadata > ) -> Self {
77
- Self { lock : Arc :: clone ( lock) , lockdep_trace : None }
78
- }
71
+ lockdep_trace : Backtrace ,
79
72
}
80
73
81
74
#[ cfg( feature = "backtrace" ) ]
@@ -160,9 +153,8 @@ impl LockMetadata {
160
153
}
161
154
// Insert any already-held locks in our locked-before set.
162
155
let mut locked_before = this. locked_before . lock ( ) . unwrap ( ) ;
163
- let mut lockdep = LockDep :: new_without_bt ( locked) ;
164
- if !locked_before. contains_key ( & lockdep. lock . lock_idx ) {
165
- lockdep. lockdep_trace = Some ( Backtrace :: new ( ) ) ;
156
+ if !locked_before. contains_key ( & locked. lock_idx ) {
157
+ let lockdep = LockDep { lock : Arc :: clone ( locked) , lockdep_trace : Backtrace :: new ( ) } ;
166
158
locked_before. insert ( lockdep. lock . lock_idx , lockdep) ;
167
159
}
168
160
}
@@ -182,9 +174,8 @@ impl LockMetadata {
182
174
// succeeds, we do consider it to have created lockorder dependencies.
183
175
let mut locked_before = this. locked_before . lock ( ) . unwrap ( ) ;
184
176
for ( locked_idx, locked) in held. borrow ( ) . iter ( ) {
185
- let mut lockdep = LockDep :: new_without_bt ( locked) ;
186
177
if !locked_before. contains_key ( locked_idx) {
187
- lockdep. lockdep_trace = Some ( Backtrace :: new ( ) ) ;
178
+ let lockdep = LockDep { lock : Arc :: clone ( locked ) , lockdep_trace : Backtrace :: new ( ) } ;
188
179
locked_before. insert ( * locked_idx, lockdep) ;
189
180
}
190
181
}
0 commit comments