| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 2100480e85864356f1f6c04cfaee13736eede544..26c9cf8d16e058c32a4955a4e921920c2d9646d6 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -36,6 +36,7 @@
|
| #include "global-handles.h"
|
| #include "messages.h"
|
| #include "platform.h"
|
| +#include "profile-generator-inl.h"
|
| #include "serialize.h"
|
| #include "snapshot.h"
|
| #include "top.h"
|
| @@ -43,6 +44,7 @@
|
| #include "v8threads.h"
|
| #include "version.h"
|
|
|
| +#include "../include/v8-profiler.h"
|
|
|
| #define LOG_API(expr) LOG(ApiEntryCall(expr))
|
|
|
| @@ -3997,6 +3999,131 @@ Local<Context> Debug::GetDebugContext() {
|
|
|
| #endif // ENABLE_DEBUGGER_SUPPORT
|
|
|
| +
|
| +#ifdef ENABLE_CPP_PROFILES_PROCESSOR
|
| +
|
| +Handle<String> CpuProfileNode::GetFunctionName() const {
|
| + IsDeadCheck("v8::CpuProfileNode::GetFunctionName");
|
| + const i::ProfileNode* node = reinterpret_cast<const i::ProfileNode*>(this);
|
| + const i::CodeEntry* entry = node->entry();
|
| + if (!entry->has_name_prefix()) {
|
| + return Handle<String>(ToApi<String>(
|
| + i::Factory::LookupAsciiSymbol(entry->name())));
|
| + } else {
|
| + return Handle<String>(ToApi<String>(i::Factory::NewConsString(
|
| + i::Factory::LookupAsciiSymbol(entry->name_prefix()),
|
| + i::Factory::LookupAsciiSymbol(entry->name()))));
|
| + }
|
| +}
|
| +
|
| +
|
| +Handle<String> CpuProfileNode::GetScriptResourceName() const {
|
| + IsDeadCheck("v8::CpuProfileNode::GetScriptResourceName");
|
| + const i::ProfileNode* node = reinterpret_cast<const i::ProfileNode*>(this);
|
| + return Handle<String>(ToApi<String>(i::Factory::LookupAsciiSymbol(
|
| + node->entry()->resource_name())));
|
| +}
|
| +
|
| +
|
| +int CpuProfileNode::GetLineNumber() const {
|
| + IsDeadCheck("v8::CpuProfileNode::GetLineNumber");
|
| + return reinterpret_cast<const i::ProfileNode*>(this)->entry()->line_number();
|
| +}
|
| +
|
| +
|
| +double CpuProfileNode::GetTotalSamplesCount() const {
|
| + IsDeadCheck("v8::CpuProfileNode::GetTotalSamplesCount");
|
| + return reinterpret_cast<const i::ProfileNode*>(this)->total_ticks();
|
| +}
|
| +
|
| +
|
| +double CpuProfileNode::GetSelfSamplesCount() const {
|
| + IsDeadCheck("v8::CpuProfileNode::GetSelfSamplesCount");
|
| + return reinterpret_cast<const i::ProfileNode*>(this)->self_ticks();
|
| +}
|
| +
|
| +
|
| +unsigned long CpuProfileNode::GetCallUid() const {
|
| + IsDeadCheck("v8::CpuProfileNode::GetCallUid");
|
| + return reinterpret_cast<const i::ProfileNode*>(this)->entry()->call_uid();
|
| +}
|
| +
|
| +
|
| +int CpuProfileNode::GetChildrenCount() const {
|
| + IsDeadCheck("v8::CpuProfileNode::GetChildrenCount");
|
| + return reinterpret_cast<const i::ProfileNode*>(this)->children()->length();
|
| +}
|
| +
|
| +
|
| +const CpuProfileNode* CpuProfileNode::GetChild(int index) const {
|
| + IsDeadCheck("v8::CpuProfileNode::GetChild");
|
| + const i::ProfileNode* child =
|
| + reinterpret_cast<const i::ProfileNode*>(this)->children()->at(index);
|
| + return reinterpret_cast<const CpuProfileNode*>(child);
|
| +}
|
| +
|
| +
|
| +unsigned CpuProfile::GetUid() const {
|
| + IsDeadCheck("v8::CpuProfile::GetUid");
|
| + return reinterpret_cast<const i::CpuProfile*>(this)->uid();
|
| +}
|
| +
|
| +
|
| +Handle<String> CpuProfile::GetTitle() const {
|
| + IsDeadCheck("v8::CpuProfile::GetTitle");
|
| + const i::CpuProfile* profile = reinterpret_cast<const i::CpuProfile*>(this);
|
| + return Handle<String>(ToApi<String>(i::Factory::LookupAsciiSymbol(
|
| + profile->title())));
|
| +}
|
| +
|
| +
|
| +const CpuProfileNode* CpuProfile::GetBottomUpRoot() const {
|
| + IsDeadCheck("v8::CpuProfile::GetBottomUpRoot");
|
| + const i::CpuProfile* profile = reinterpret_cast<const i::CpuProfile*>(this);
|
| + return reinterpret_cast<const CpuProfileNode*>(profile->bottom_up()->root());
|
| +}
|
| +
|
| +
|
| +const CpuProfileNode* CpuProfile::GetTopDownRoot() const {
|
| + IsDeadCheck("v8::CpuProfile::GetTopDownRoot");
|
| + const i::CpuProfile* profile = reinterpret_cast<const i::CpuProfile*>(this);
|
| + return reinterpret_cast<const CpuProfileNode*>(profile->top_down()->root());
|
| +}
|
| +
|
| +
|
| +int CpuProfiler::GetProfilesCount() {
|
| + IsDeadCheck("v8::CpuProfiler::GetProfilesCount");
|
| + return i::CpuProfiler::GetProfilesCount();
|
| +}
|
| +
|
| +
|
| +const CpuProfile* CpuProfiler::GetProfile(int index) {
|
| + IsDeadCheck("v8::CpuProfiler::GetProfile");
|
| + return reinterpret_cast<const CpuProfile*>(i::CpuProfiler::GetProfile(index));
|
| +}
|
| +
|
| +
|
| +const CpuProfile* CpuProfiler::FindProfile(unsigned uid) {
|
| + IsDeadCheck("v8::CpuProfiler::FindProfile");
|
| + return reinterpret_cast<const CpuProfile*>(i::CpuProfiler::FindProfile(uid));
|
| +}
|
| +
|
| +
|
| +void CpuProfiler::StartProfiling(Handle<String> title) {
|
| + IsDeadCheck("v8::CpuProfiler::StartProfiling");
|
| + i::CpuProfiler::StartProfiling(*Utils::OpenHandle(*title));
|
| +}
|
| +
|
| +
|
| +const CpuProfile* CpuProfiler::StopProfiling(Handle<String> title) {
|
| + IsDeadCheck("v8::CpuProfiler::StopProfiling");
|
| + return reinterpret_cast<const CpuProfile*>(
|
| + i::CpuProfiler::StopProfiling(*Utils::OpenHandle(*title)));
|
| +}
|
| +
|
| +#endif // ENABLE_CPP_PROFILES_PROCESSOR
|
| +
|
| +
|
| namespace internal {
|
|
|
|
|
|
|