gecko-dev/tools/profiler/lul/LulCommon.cpp
Benoit Girard daba448963 Bug 1178892 - Split the profiler into Core & Gecko files and break apart monolithic headers. r=mstange
--HG--
rename : tools/profiler/EHABIStackWalk.cpp => tools/profiler/core/EHABIStackWalk.cpp
rename : tools/profiler/EHABIStackWalk.h => tools/profiler/core/EHABIStackWalk.h
rename : tools/profiler/TableTicker.cpp => tools/profiler/core/GeckoSampler.cpp
rename : tools/profiler/TableTicker.h => tools/profiler/core/GeckoSampler.h
rename : tools/profiler/IntelPowerGadget.cpp => tools/profiler/core/IntelPowerGadget.cpp
rename : tools/profiler/IntelPowerGadget.h => tools/profiler/core/IntelPowerGadget.h
rename : tools/profiler/PlatformMacros.h => tools/profiler/core/PlatformMacros.h
rename : tools/profiler/ProfileEntry.cpp => tools/profiler/core/ProfileEntry.cpp
rename : tools/profiler/ProfileEntry.h => tools/profiler/core/ProfileEntry.h
rename : tools/profiler/ProfileJSONWriter.cpp => tools/profiler/core/ProfileJSONWriter.cpp
rename : tools/profiler/ProfileJSONWriter.h => tools/profiler/core/ProfileJSONWriter.h
rename : tools/profiler/ProfilerBacktrace.cpp => tools/profiler/core/ProfilerBacktrace.cpp
rename : tools/profiler/ProfilerMarkers.cpp => tools/profiler/core/ProfilerMarkers.cpp
rename : tools/profiler/SyncProfile.cpp => tools/profiler/core/SyncProfile.cpp
rename : tools/profiler/SyncProfile.h => tools/profiler/core/SyncProfile.h
rename : tools/profiler/platform-linux.cc => tools/profiler/core/platform-linux.cc
rename : tools/profiler/platform-macos.cc => tools/profiler/core/platform-macos.cc
rename : tools/profiler/platform-win32.cc => tools/profiler/core/platform-win32.cc
rename : tools/profiler/platform.cpp => tools/profiler/core/platform.cpp
rename : tools/profiler/platform.h => tools/profiler/core/platform.h
rename : tools/profiler/shared-libraries-linux.cc => tools/profiler/core/shared-libraries-linux.cc
rename : tools/profiler/shared-libraries-macos.cc => tools/profiler/core/shared-libraries-macos.cc
rename : tools/profiler/shared-libraries-win32.cc => tools/profiler/core/shared-libraries-win32.cc
rename : tools/profiler/shim_mac_dump_syms.h => tools/profiler/core/shim_mac_dump_syms.h
rename : tools/profiler/shim_mac_dump_syms.mm => tools/profiler/core/shim_mac_dump_syms.mm
rename : tools/profiler/v8-support.h => tools/profiler/core/v8-support.h
rename : tools/profiler/ProfileGatherer.cpp => tools/profiler/gecko/ProfileGatherer.cpp
rename : tools/profiler/Profiler.jsm => tools/profiler/gecko/Profiler.jsm
rename : tools/profiler/ProfilerIOInterposeObserver.cpp => tools/profiler/gecko/ProfilerIOInterposeObserver.cpp
rename : tools/profiler/ProfilerIOInterposeObserver.h => tools/profiler/gecko/ProfilerIOInterposeObserver.h
rename : tools/profiler/SaveProfileTask.cpp => tools/profiler/gecko/SaveProfileTask.cpp
rename : tools/profiler/SaveProfileTask.h => tools/profiler/gecko/SaveProfileTask.h
rename : tools/profiler/ThreadResponsiveness.cpp => tools/profiler/gecko/ThreadResponsiveness.cpp
rename : tools/profiler/ThreadResponsiveness.h => tools/profiler/gecko/ThreadResponsiveness.h
rename : tools/profiler/local_debug_info_symbolizer.cc => tools/profiler/gecko/local_debug_info_symbolizer.cc
rename : tools/profiler/local_debug_info_symbolizer.h => tools/profiler/gecko/local_debug_info_symbolizer.h
rename : tools/profiler/nsIProfileSaveEvent.idl => tools/profiler/gecko/nsIProfileSaveEvent.idl
rename : tools/profiler/nsIProfiler.idl => tools/profiler/gecko/nsIProfiler.idl
rename : tools/profiler/nsProfiler.cpp => tools/profiler/gecko/nsProfiler.cpp
rename : tools/profiler/nsProfiler.h => tools/profiler/gecko/nsProfiler.h
rename : tools/profiler/nsProfilerCIID.h => tools/profiler/gecko/nsProfilerCIID.h
rename : tools/profiler/nsProfilerFactory.cpp => tools/profiler/gecko/nsProfilerFactory.cpp
rename : tools/profiler/nsProfilerStartParams.cpp => tools/profiler/gecko/nsProfilerStartParams.cpp
rename : tools/profiler/nsProfilerStartParams.h => tools/profiler/gecko/nsProfilerStartParams.h
rename : tools/profiler/AutoObjectMapper.cpp => tools/profiler/lul/AutoObjectMapper.cpp
rename : tools/profiler/AutoObjectMapper.h => tools/profiler/lul/AutoObjectMapper.h
rename : tools/profiler/LulCommon.cpp => tools/profiler/lul/LulCommon.cpp
rename : tools/profiler/LulCommonExt.h => tools/profiler/lul/LulCommonExt.h
rename : tools/profiler/LulDwarf.cpp => tools/profiler/lul/LulDwarf.cpp
rename : tools/profiler/LulDwarfExt.h => tools/profiler/lul/LulDwarfExt.h
rename : tools/profiler/LulDwarfInt.h => tools/profiler/lul/LulDwarfInt.h
rename : tools/profiler/LulDwarfSummariser.cpp => tools/profiler/lul/LulDwarfSummariser.cpp
rename : tools/profiler/LulDwarfSummariser.h => tools/profiler/lul/LulDwarfSummariser.h
rename : tools/profiler/LulElf.cpp => tools/profiler/lul/LulElf.cpp
rename : tools/profiler/LulElfExt.h => tools/profiler/lul/LulElfExt.h
rename : tools/profiler/LulElfInt.h => tools/profiler/lul/LulElfInt.h
rename : tools/profiler/LulMain.cpp => tools/profiler/lul/LulMain.cpp
rename : tools/profiler/LulMain.h => tools/profiler/lul/LulMain.h
rename : tools/profiler/LulMainInt.h => tools/profiler/lul/LulMainInt.h
rename : tools/profiler/LulPlatformMacros.h => tools/profiler/lul/LulPlatformMacros.h
rename : tools/profiler/platform-linux-lul.cpp => tools/profiler/lul/platform-linux-lul.cpp
rename : tools/profiler/platform-linux-lul.h => tools/profiler/lul/platform-linux-lul.h
rename : tools/profiler/GeckoProfiler.h => tools/profiler/public/GeckoProfiler.h
rename : tools/profiler/GeckoProfilerFunc.h => tools/profiler/public/GeckoProfilerFunc.h
rename : tools/profiler/GeckoProfilerImpl.h => tools/profiler/public/GeckoProfilerImpl.h
rename : tools/profiler/ProfileGatherer.h => tools/profiler/public/ProfileGatherer.h
rename : tools/profiler/ProfilerBacktrace.h => tools/profiler/public/ProfilerBacktrace.h
rename : tools/profiler/ProfilerMarkers.h => tools/profiler/public/ProfilerMarkers.h
rename : tools/profiler/PseudoStack.h => tools/profiler/public/PseudoStack.h
rename : tools/profiler/shared-libraries.h => tools/profiler/public/shared-libraries.h
rename : tools/profiler/GeckoTaskTracer.cpp => tools/profiler/tasktracer/GeckoTaskTracer.cpp
rename : tools/profiler/GeckoTaskTracer.h => tools/profiler/tasktracer/GeckoTaskTracer.h
rename : tools/profiler/GeckoTaskTracerImpl.h => tools/profiler/tasktracer/GeckoTaskTracerImpl.h
rename : tools/profiler/SourceEventTypeMap.h => tools/profiler/tasktracer/SourceEventTypeMap.h
rename : tools/profiler/TracedTaskCommon.cpp => tools/profiler/tasktracer/TracedTaskCommon.cpp
rename : tools/profiler/TracedTaskCommon.h => tools/profiler/tasktracer/TracedTaskCommon.h
extra : commitid : EGgqHIgsN6z
2015-06-30 15:03:45 -04:00

115 lines
3.4 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
// Copyright (c) 2011, 2013 Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
// This file is derived from the following files in
// toolkit/crashreporter/google-breakpad:
// src/common/module.cc
// src/common/unique_string.cc
// There's no internal-only interface for LulCommon. Hence include
// the external interface directly.
#include "LulCommonExt.h"
#include <stdlib.h>
#include <string.h>
#include <string>
#include <map>
namespace lul {
using std::string;
////////////////////////////////////////////////////////////////
// Module
//
Module::Module(const string &name, const string &os,
const string &architecture, const string &id) :
name_(name),
os_(os),
architecture_(architecture),
id_(id) { }
Module::~Module() {
}
////////////////////////////////////////////////////////////////
// UniqueString
//
class UniqueString {
public:
explicit UniqueString(string str) { str_ = strdup(str.c_str()); }
~UniqueString() { free(reinterpret_cast<void*>(const_cast<char*>(str_))); }
const char* str_;
};
const char* const FromUniqueString(const UniqueString* ustr)
{
return ustr->str_;
}
bool IsEmptyUniqueString(const UniqueString* ustr)
{
return (ustr->str_)[0] == '\0';
}
////////////////////////////////////////////////////////////////
// UniqueStringUniverse
//
UniqueStringUniverse::~UniqueStringUniverse()
{
for (std::map<string, UniqueString*>::iterator it = map_.begin();
it != map_.end(); it++) {
delete it->second;
}
}
const UniqueString* UniqueStringUniverse::ToUniqueString(string str)
{
std::map<string, UniqueString*>::iterator it = map_.find(str);
if (it == map_.end()) {
UniqueString* ustr = new UniqueString(str);
map_[str] = ustr;
return ustr;
} else {
return it->second;
}
}
} // namespace lul