forked from OSchip/llvm-project
Make a log timer for the BSD archive creation so we can track the time it
takes to open and index BSD archives. llvm-svn: 147813
This commit is contained in:
parent
7f21bd74b8
commit
aecb12b5c6
|
@ -16,6 +16,7 @@
|
|||
#include "lldb/Core/Module.h"
|
||||
#include "lldb/Core/PluginManager.h"
|
||||
#include "lldb/Core/RegularExpression.h"
|
||||
#include "lldb/Core/Timer.h"
|
||||
#include "lldb/Host/Mutex.h"
|
||||
#include "lldb/Symbol/ObjectFile.h"
|
||||
|
||||
|
@ -265,31 +266,39 @@ ObjectContainerBSDArchive::CreateInstance
|
|||
Module* module,
|
||||
DataBufferSP& data_sp,
|
||||
const FileSpec *file,
|
||||
addr_t offset,
|
||||
addr_t length)
|
||||
addr_t file_offset,
|
||||
addr_t file_size)
|
||||
{
|
||||
if (file && data_sp && ObjectContainerBSDArchive::MagicBytesMatch(data_sp))
|
||||
{
|
||||
Archive::shared_ptr archive_sp (Archive::FindCachedArchive (*file, module->GetArchitecture(), module->GetModificationTime()));
|
||||
|
||||
if (archive_sp)
|
||||
Timer scoped_timer (__PRETTY_FUNCTION__,
|
||||
"ObjectContainerBSDArchive::CreateInstance (module = %s/%s, file = %p, file_offset = 0x%z8.8x, file_size = 0x%z8.8x)",
|
||||
module->GetFileSpec().GetDirectory().AsCString(),
|
||||
module->GetFileSpec().GetFilename().AsCString(),
|
||||
file, file_offset, file_size);
|
||||
|
||||
std::auto_ptr<ObjectContainerBSDArchive> container_ap(new ObjectContainerBSDArchive (module, data_sp, file, file_offset, file_size));
|
||||
|
||||
if (container_ap.get())
|
||||
{
|
||||
// We already have this archive in our cache, use it
|
||||
std::auto_ptr<ObjectContainerBSDArchive> container_ap(new ObjectContainerBSDArchive (module, data_sp, file, offset, length));
|
||||
if (container_ap.get())
|
||||
Archive::shared_ptr archive_sp (Archive::FindCachedArchive (*file, module->GetArchitecture(), module->GetModificationTime()));
|
||||
|
||||
if (archive_sp)
|
||||
{
|
||||
// We already have this archive in our cache, use it
|
||||
container_ap->SetArchive (archive_sp);
|
||||
return container_ap.release();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Read everything since we need that in order to index all the
|
||||
// objects in the archive
|
||||
data_sp = file->MemoryMapFileContents (file_offset, file_size);
|
||||
|
||||
if (container_ap->ParseHeader())
|
||||
return container_ap.release();
|
||||
}
|
||||
}
|
||||
|
||||
// Read everything since we need that in order to index all the
|
||||
// objects in the archive
|
||||
data_sp = file->MemoryMapFileContents (offset, length);
|
||||
|
||||
std::auto_ptr<ObjectContainerBSDArchive> container_ap(new ObjectContainerBSDArchive (module, data_sp, file, offset, length));
|
||||
if (container_ap->ParseHeader())
|
||||
return container_ap.release();
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue