diff options
Diffstat (limited to 'src/mongo/scripting/v8_profiler.cpp')
-rw-r--r-- | src/mongo/scripting/v8_profiler.cpp | 73 |
1 files changed, 36 insertions, 37 deletions
diff --git a/src/mongo/scripting/v8_profiler.cpp b/src/mongo/scripting/v8_profiler.cpp index 4089b205005..761cb2bf332 100644 --- a/src/mongo/scripting/v8_profiler.cpp +++ b/src/mongo/scripting/v8_profiler.cpp @@ -33,47 +33,46 @@ #include "mongo/util/mongoutils/str.h" namespace mongo { - void V8CpuProfiler::start(const StringData name) { - v8::CpuProfiler::StartProfiling(v8::String::New(name.toString().c_str())); - } +void V8CpuProfiler::start(const StringData name) { + v8::CpuProfiler::StartProfiling(v8::String::New(name.toString().c_str())); +} - void V8CpuProfiler::stop(const StringData name) { - _cpuProfiles.insert(make_pair(name.toString(), - v8::CpuProfiler::StopProfiling(v8::String::New(name.toString().c_str(), - name.size())))); - } +void V8CpuProfiler::stop(const StringData name) { + _cpuProfiles.insert(make_pair( + name.toString(), + v8::CpuProfiler::StopProfiling(v8::String::New(name.toString().c_str(), name.size())))); +} - void V8CpuProfiler::traverseDepthFirst(const v8::CpuProfileNode* cpuProfileNode, - BSONArrayBuilder& arrayBuilder) { - if (cpuProfileNode == NULL) - return; - BSONObjBuilder frameObjBuilder; - frameObjBuilder.append("Function", - *v8::String::Utf8Value(cpuProfileNode->GetFunctionName())); - frameObjBuilder.append("Source", - *v8::String::Utf8Value(cpuProfileNode->GetScriptResourceName())); - frameObjBuilder.appendNumber("Line", cpuProfileNode->GetLineNumber()); - frameObjBuilder.appendNumber("SelfTime", cpuProfileNode->GetSelfTime()); - frameObjBuilder.appendNumber("TotalTime", cpuProfileNode->GetTotalTime()); - if (cpuProfileNode->GetChildrenCount()) { - BSONArrayBuilder subArrayBuilder(frameObjBuilder.subarrayStart("Children")); - for (int i = 0; i < cpuProfileNode->GetChildrenCount(); ++i) { - traverseDepthFirst(cpuProfileNode->GetChild(i), subArrayBuilder); - } - subArrayBuilder.done(); +void V8CpuProfiler::traverseDepthFirst(const v8::CpuProfileNode* cpuProfileNode, + BSONArrayBuilder& arrayBuilder) { + if (cpuProfileNode == NULL) + return; + BSONObjBuilder frameObjBuilder; + frameObjBuilder.append("Function", *v8::String::Utf8Value(cpuProfileNode->GetFunctionName())); + frameObjBuilder.append("Source", + *v8::String::Utf8Value(cpuProfileNode->GetScriptResourceName())); + frameObjBuilder.appendNumber("Line", cpuProfileNode->GetLineNumber()); + frameObjBuilder.appendNumber("SelfTime", cpuProfileNode->GetSelfTime()); + frameObjBuilder.appendNumber("TotalTime", cpuProfileNode->GetTotalTime()); + if (cpuProfileNode->GetChildrenCount()) { + BSONArrayBuilder subArrayBuilder(frameObjBuilder.subarrayStart("Children")); + for (int i = 0; i < cpuProfileNode->GetChildrenCount(); ++i) { + traverseDepthFirst(cpuProfileNode->GetChild(i), subArrayBuilder); } - arrayBuilder << frameObjBuilder.obj(); + subArrayBuilder.done(); } + arrayBuilder << frameObjBuilder.obj(); +} - const BSONArray V8CpuProfiler::fetch(const StringData name) { - BSONArrayBuilder arrayBuilder; - CpuProfileMap::const_iterator iProf = _cpuProfiles.find(name.toString()); - if (iProf == _cpuProfiles.end()) - return arrayBuilder.arr(); - const v8::CpuProfile* cpuProfile = iProf->second; - if (cpuProfile == NULL) - return arrayBuilder.arr(); - traverseDepthFirst(cpuProfile->GetTopDownRoot(), arrayBuilder); +const BSONArray V8CpuProfiler::fetch(const StringData name) { + BSONArrayBuilder arrayBuilder; + CpuProfileMap::const_iterator iProf = _cpuProfiles.find(name.toString()); + if (iProf == _cpuProfiles.end()) return arrayBuilder.arr(); - } + const v8::CpuProfile* cpuProfile = iProf->second; + if (cpuProfile == NULL) + return arrayBuilder.arr(); + traverseDepthFirst(cpuProfile->GetTopDownRoot(), arrayBuilder); + return arrayBuilder.arr(); +} } |