@@ -496,42 +496,36 @@ void DWARFUnit::extractDIEsIfNeeded(bool CUDieOnly) {
496
496
}
497
497
498
498
Error DWARFUnit::tryExtractDIEsIfNeeded (bool CUDieOnly) {
499
- // read-lock:
500
499
{
501
500
llvm::sys::ScopedReader Lock (m_cu_die_array_mutex);
502
- if ((CUDieOnly && !DieArray.empty ()) ||
503
- DieArray.size () > 1 )
501
+ if ((CUDieOnly && !DieArray.empty ()) || DieArray.size () > 1 )
504
502
return Error::success (); // Already parsed.
505
503
}
506
504
bool HasCUDie = false ;
507
- // write-lock:
508
505
{
509
506
llvm::sys::ScopedWriter Lock (m_cu_die_array_mutex);
510
- if ((CUDieOnly && !DieArray.empty ()) ||
511
- DieArray.size () > 1 )
507
+ if ((CUDieOnly && !DieArray.empty ()) || DieArray.size () > 1 )
512
508
return Error::success (); // Already parsed.
513
509
HasCUDie = !DieArray.empty ();
514
510
extractDIEsToVector (!HasCUDie, !CUDieOnly, DieArray);
515
511
}
512
+ {
513
+ llvm::sys::ScopedReader Lock (m_all_die_array_mutex);
514
+ if (DieArray.empty ())
515
+ return Error::success ();
516
516
517
- // read-lock:
518
- {
519
- llvm::sys::ScopedReader Lock (m_all_die_array_mutex);
517
+ // If CU DIE was just parsed, copy several attribute values from it.
518
+ if (HasCUDie)
519
+ return Error::success ();
520
+ }
521
+ llvm::sys::ScopedWriter Lock (m_all_die_array_mutex);
520
522
if (DieArray.empty ())
521
523
return Error::success ();
522
524
523
525
// If CU DIE was just parsed, copy several attribute values from it.
524
526
if (HasCUDie)
525
527
return Error::success ();
526
- }
527
- // write-lock:
528
- llvm::sys::ScopedWriter Lock (m_all_die_array_mutex);
529
- if (DieArray.empty ())
530
- return Error::success ();
531
528
532
- // If CU DIE was just parsed, copy several attribute values from it.
533
- if (HasCUDie)
534
- return Error::success ();
535
529
DWARFDie UnitDie (this , &DieArray[0 ]);
536
530
if (std::optional<uint64_t > DWOId =
537
531
toUnsigned (UnitDie.find (DW_AT_GNU_dwo_id)))
0 commit comments