[Lldb-commits] [lldb] r147813 - /lldb/trunk/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
Greg Clayton
gclayton at apple.com
Mon Jan 9 15:59:30 PST 2012
Author: gclayton
Date: Mon Jan 9 17:59:30 2012
New Revision: 147813
URL: http://llvm.org/viewvc/llvm-project?rev=147813&view=rev
Log:
Make a log timer for the BSD archive creation so we can track the time it
takes to open and index BSD archives.
Modified:
lldb/trunk/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
Modified: lldb/trunk/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp?rev=147813&r1=147812&r2=147813&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp (original)
+++ lldb/trunk/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp Mon Jan 9 17:59:30 2012
@@ -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 @@
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;
}
More information about the lldb-commits
mailing list