/**
* Returns number of samples recorded. The samples are not recorded unless
- * |record_samples| parameter of CpuProfiler::StartProfiling is true.
+ * |record_samples| parameter of CpuProfiler::StartCpuProfiling is true.
*/
int GetSamplesCount() const;
/**
- * Interface for controlling CPU profiling.
+ * Interface for controlling CPU profiling. Instance of the
+ * profiler can be retrieved using v8::Isolate::GetCpuProfiler.
*/
class V8EXPORT CpuProfiler {
public:
* obtaining profiling results.
*/
+ /** Deprecated. Use GetProfileCount instead. */
+ static int GetProfilesCount();
/**
* Returns the number of profiles collected (doesn't include
* profiles that are being collected at the moment of call.)
*/
- static int GetProfilesCount();
+ int GetProfileCount();
- /** Returns a profile by index. */
+ /** Deprecated. Use GetCpuProfile instead. */
static const CpuProfile* GetProfile(
int index,
Handle<Value> security_token = Handle<Value>());
+ /** Returns a profile by index. */
+ const CpuProfile* GetCpuProfile(
+ int index,
+ Handle<Value> security_token = Handle<Value>());
- /** Returns a profile by uid. */
+ /** Deprecated. Use FindProfile instead. */
static const CpuProfile* FindProfile(
unsigned uid,
Handle<Value> security_token = Handle<Value>());
+ /** Returns a profile by uid. */
+ const CpuProfile* FindCpuProfile(
+ unsigned uid,
+ Handle<Value> security_token = Handle<Value>());
+ /** Deprecated. Use StartCpuProfiling instead. */
+ static void StartProfiling(Handle<String> title, bool record_samples = false);
/**
* Starts collecting CPU profile. Title may be an empty string. It
* is allowed to have several profiles being collected at
* |record_samples| parameter controls whether individual samples should
* be recorded in addition to the aggregated tree.
*/
- static void StartProfiling(Handle<String> title, bool record_samples = false);
+ void StartCpuProfiling(Handle<String> title, bool record_samples = false);
+ /** Deprecated. Use StopCpuProfiling instead. */
+ static const CpuProfile* StopProfiling(
+ Handle<String> title,
+ Handle<Value> security_token = Handle<Value>());
/**
* Stops collecting CPU profile with a given title and returns it.
* If the title given is empty, finishes the last profile started.
*/
- static const CpuProfile* StopProfiling(
+ const CpuProfile* StopCpuProfiling(
Handle<String> title,
Handle<Value> security_token = Handle<Value>());
+ /** Deprecated. Use DeleteAllCpuProfiles instead. */
+ static void DeleteAllProfiles();
/**
* Deletes all existing profiles, also cancelling all profiling
* activity. All previously returned pointers to profiles and their
* contents become invalid after this call.
*/
- static void DeleteAllProfiles();
+ void DeleteAllCpuProfiles();
+
+ private:
+ CpuProfiler();
+ ~CpuProfiler();
+ CpuProfiler(const CpuProfiler&);
+ CpuProfiler& operator=(const CpuProfiler&);
};
}
+CpuProfiler* Isolate::GetCpuProfiler() {
+ i::CpuProfiler* cpu_profiler =
+ reinterpret_cast<i::Isolate*>(this)->cpu_profiler();
+ return reinterpret_cast<CpuProfiler*>(cpu_profiler);
+}
+
+
void V8::SetGlobalGCPrologueCallback(GCCallback callback) {
i::Isolate* isolate = i::Isolate::Current();
if (IsDeadCheck(isolate, "v8::V8::SetGlobalGCPrologueCallback()")) return;
}
+int CpuProfiler::GetProfileCount() {
+ return reinterpret_cast<i::CpuProfiler*>(this)->GetProfilesCount();
+}
+
+
const CpuProfile* CpuProfiler::GetProfile(int index,
Handle<Value> security_token) {
i::Isolate* isolate = i::Isolate::Current();
}
+const CpuProfile* CpuProfiler::GetCpuProfile(int index,
+ Handle<Value> security_token) {
+ return reinterpret_cast<const CpuProfile*>(
+ reinterpret_cast<i::CpuProfiler*>(this)->GetProfile(
+ security_token.IsEmpty() ? NULL : *Utils::OpenHandle(*security_token),
+ index));
+}
+
+
const CpuProfile* CpuProfiler::FindProfile(unsigned uid,
Handle<Value> security_token) {
i::Isolate* isolate = i::Isolate::Current();
}
+const CpuProfile* CpuProfiler::FindCpuProfile(unsigned uid,
+ Handle<Value> security_token) {
+ return reinterpret_cast<const CpuProfile*>(
+ reinterpret_cast<i::CpuProfiler*>(this)->FindProfile(
+ security_token.IsEmpty() ? NULL : *Utils::OpenHandle(*security_token),
+ uid));
+}
+
+
void CpuProfiler::StartProfiling(Handle<String> title, bool record_samples) {
i::Isolate* isolate = i::Isolate::Current();
IsDeadCheck(isolate, "v8::CpuProfiler::StartProfiling");
}
+void CpuProfiler::StartCpuProfiling(Handle<String> title, bool record_samples) {
+ reinterpret_cast<i::CpuProfiler*>(this)->StartProfiling(
+ *Utils::OpenHandle(*title), record_samples);
+}
+
+
const CpuProfile* CpuProfiler::StopProfiling(Handle<String> title,
Handle<Value> security_token) {
i::Isolate* isolate = i::Isolate::Current();
}
+const CpuProfile* CpuProfiler::StopCpuProfiling(Handle<String> title,
+ Handle<Value> security_token) {
+ return reinterpret_cast<const CpuProfile*>(
+ reinterpret_cast<i::CpuProfiler*>(this)->StopProfiling(
+ security_token.IsEmpty() ? NULL : *Utils::OpenHandle(*security_token),
+ *Utils::OpenHandle(*title)));
+}
+
+
void CpuProfiler::DeleteAllProfiles() {
i::Isolate* isolate = i::Isolate::Current();
IsDeadCheck(isolate, "v8::CpuProfiler::DeleteAllProfiles");
}
+void CpuProfiler::DeleteAllCpuProfiles() {
+ reinterpret_cast<i::CpuProfiler*>(this)->DeleteAllProfiles();
+}
+
+
static i::HeapGraphEdge* ToInternal(const HeapGraphEdge* edge) {
return const_cast<i::HeapGraphEdge*>(
reinterpret_cast<const i::HeapGraphEdge*>(edge));
TEST(DeleteCpuProfile) {
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
+ v8::CpuProfiler* cpu_profiler = env->GetIsolate()->GetCpuProfiler();
- CHECK_EQ(0, v8::CpuProfiler::GetProfilesCount());
+ CHECK_EQ(0, cpu_profiler->GetProfileCount());
v8::Local<v8::String> name1 = v8::String::New("1");
- v8::CpuProfiler::StartProfiling(name1);
- const v8::CpuProfile* p1 = v8::CpuProfiler::StopProfiling(name1);
+ cpu_profiler->StartCpuProfiling(name1);
+ const v8::CpuProfile* p1 = cpu_profiler->StopCpuProfiling(name1);
CHECK_NE(NULL, p1);
- CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount());
+ CHECK_EQ(1, cpu_profiler->GetProfileCount());
unsigned uid1 = p1->GetUid();
- CHECK_EQ(p1, v8::CpuProfiler::FindProfile(uid1));
+ CHECK_EQ(p1, cpu_profiler->FindCpuProfile(uid1));
const_cast<v8::CpuProfile*>(p1)->Delete();
- CHECK_EQ(0, v8::CpuProfiler::GetProfilesCount());
- CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid1));
+ CHECK_EQ(0, cpu_profiler->GetProfileCount());
+ CHECK_EQ(NULL, cpu_profiler->FindCpuProfile(uid1));
v8::Local<v8::String> name2 = v8::String::New("2");
- v8::CpuProfiler::StartProfiling(name2);
- const v8::CpuProfile* p2 = v8::CpuProfiler::StopProfiling(name2);
+ cpu_profiler->StartCpuProfiling(name2);
+ const v8::CpuProfile* p2 = cpu_profiler->StopCpuProfiling(name2);
CHECK_NE(NULL, p2);
- CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount());
+ CHECK_EQ(1, cpu_profiler->GetProfileCount());
unsigned uid2 = p2->GetUid();
CHECK_NE(static_cast<int>(uid1), static_cast<int>(uid2));
- CHECK_EQ(p2, v8::CpuProfiler::FindProfile(uid2));
- CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid1));
+ CHECK_EQ(p2, cpu_profiler->FindCpuProfile(uid2));
+ CHECK_EQ(NULL, cpu_profiler->FindCpuProfile(uid1));
v8::Local<v8::String> name3 = v8::String::New("3");
- v8::CpuProfiler::StartProfiling(name3);
- const v8::CpuProfile* p3 = v8::CpuProfiler::StopProfiling(name3);
+ cpu_profiler->StartCpuProfiling(name3);
+ const v8::CpuProfile* p3 = cpu_profiler->StopCpuProfiling(name3);
CHECK_NE(NULL, p3);
- CHECK_EQ(2, v8::CpuProfiler::GetProfilesCount());
+ CHECK_EQ(2, cpu_profiler->GetProfileCount());
unsigned uid3 = p3->GetUid();
CHECK_NE(static_cast<int>(uid1), static_cast<int>(uid3));
- CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3));
- CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid1));
+ CHECK_EQ(p3, cpu_profiler->FindCpuProfile(uid3));
+ CHECK_EQ(NULL, cpu_profiler->FindCpuProfile(uid1));
const_cast<v8::CpuProfile*>(p2)->Delete();
- CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount());
- CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid2));
- CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3));
+ CHECK_EQ(1, cpu_profiler->GetProfileCount());
+ CHECK_EQ(NULL, cpu_profiler->FindCpuProfile(uid2));
+ CHECK_EQ(p3, cpu_profiler->FindCpuProfile(uid3));
const_cast<v8::CpuProfile*>(p3)->Delete();
- CHECK_EQ(0, v8::CpuProfiler::GetProfilesCount());
- CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid3));
- CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid2));
- CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid1));
+ CHECK_EQ(0, cpu_profiler->GetProfileCount());
+ CHECK_EQ(NULL, cpu_profiler->FindCpuProfile(uid3));
+ CHECK_EQ(NULL, cpu_profiler->FindCpuProfile(uid2));
+ CHECK_EQ(NULL, cpu_profiler->FindCpuProfile(uid1));
}
TEST(DeleteCpuProfileDifferentTokens) {
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
+ v8::CpuProfiler* cpu_profiler = env->GetIsolate()->GetCpuProfiler();
- CHECK_EQ(0, v8::CpuProfiler::GetProfilesCount());
+ CHECK_EQ(0, cpu_profiler->GetProfileCount());
v8::Local<v8::String> name1 = v8::String::New("1");
- v8::CpuProfiler::StartProfiling(name1);
- const v8::CpuProfile* p1 = v8::CpuProfiler::StopProfiling(name1);
+ cpu_profiler->StartCpuProfiling(name1);
+ const v8::CpuProfile* p1 = cpu_profiler->StopCpuProfiling(name1);
CHECK_NE(NULL, p1);
- CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount());
+ CHECK_EQ(1, cpu_profiler->GetProfileCount());
unsigned uid1 = p1->GetUid();
- CHECK_EQ(p1, v8::CpuProfiler::FindProfile(uid1));
+ CHECK_EQ(p1, cpu_profiler->FindCpuProfile(uid1));
v8::Local<v8::String> token1 = v8::String::New("token1");
- const v8::CpuProfile* p1_t1 = v8::CpuProfiler::FindProfile(uid1, token1);
+ const v8::CpuProfile* p1_t1 = cpu_profiler->FindCpuProfile(uid1, token1);
CHECK_NE(NULL, p1_t1);
CHECK_NE(p1, p1_t1);
- CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount());
+ CHECK_EQ(1, cpu_profiler->GetProfileCount());
const_cast<v8::CpuProfile*>(p1)->Delete();
- CHECK_EQ(0, v8::CpuProfiler::GetProfilesCount());
- CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid1));
- CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid1, token1));
+ CHECK_EQ(0, cpu_profiler->GetProfileCount());
+ CHECK_EQ(NULL, cpu_profiler->FindCpuProfile(uid1));
+ CHECK_EQ(NULL, cpu_profiler->FindCpuProfile(uid1, token1));
const_cast<v8::CpuProfile*>(p1_t1)->Delete();
- CHECK_EQ(0, v8::CpuProfiler::GetProfilesCount());
+ CHECK_EQ(0, cpu_profiler->GetProfileCount());
v8::Local<v8::String> name2 = v8::String::New("2");
- v8::CpuProfiler::StartProfiling(name2);
+ cpu_profiler->StartCpuProfiling(name2);
v8::Local<v8::String> token2 = v8::String::New("token2");
- const v8::CpuProfile* p2_t2 = v8::CpuProfiler::StopProfiling(name2, token2);
+ const v8::CpuProfile* p2_t2 = cpu_profiler->StopCpuProfiling(name2, token2);
CHECK_NE(NULL, p2_t2);
- CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount());
+ CHECK_EQ(1, cpu_profiler->GetProfileCount());
unsigned uid2 = p2_t2->GetUid();
CHECK_NE(static_cast<int>(uid1), static_cast<int>(uid2));
- const v8::CpuProfile* p2 = v8::CpuProfiler::FindProfile(uid2);
+ const v8::CpuProfile* p2 = cpu_profiler->FindCpuProfile(uid2);
CHECK_NE(p2_t2, p2);
v8::Local<v8::String> name3 = v8::String::New("3");
- v8::CpuProfiler::StartProfiling(name3);
- const v8::CpuProfile* p3 = v8::CpuProfiler::StopProfiling(name3);
+ cpu_profiler->StartCpuProfiling(name3);
+ const v8::CpuProfile* p3 = cpu_profiler->StopCpuProfiling(name3);
CHECK_NE(NULL, p3);
- CHECK_EQ(2, v8::CpuProfiler::GetProfilesCount());
+ CHECK_EQ(2, cpu_profiler->GetProfileCount());
unsigned uid3 = p3->GetUid();
CHECK_NE(static_cast<int>(uid1), static_cast<int>(uid3));
- CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3));
+ CHECK_EQ(p3, cpu_profiler->FindCpuProfile(uid3));
const_cast<v8::CpuProfile*>(p2_t2)->Delete();
- CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount());
- CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid2));
- CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3));
+ CHECK_EQ(1, cpu_profiler->GetProfileCount());
+ CHECK_EQ(NULL, cpu_profiler->FindCpuProfile(uid2));
+ CHECK_EQ(p3, cpu_profiler->FindCpuProfile(uid3));
const_cast<v8::CpuProfile*>(p2)->Delete();
- CHECK_EQ(1, v8::CpuProfiler::GetProfilesCount());
- CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid2));
- CHECK_EQ(p3, v8::CpuProfiler::FindProfile(uid3));
+ CHECK_EQ(1, cpu_profiler->GetProfileCount());
+ CHECK_EQ(NULL, cpu_profiler->FindCpuProfile(uid2));
+ CHECK_EQ(p3, cpu_profiler->FindCpuProfile(uid3));
const_cast<v8::CpuProfile*>(p3)->Delete();
- CHECK_EQ(0, v8::CpuProfiler::GetProfilesCount());
- CHECK_EQ(NULL, v8::CpuProfiler::FindProfile(uid3));
+ CHECK_EQ(0, cpu_profiler->GetProfileCount());
+ CHECK_EQ(NULL, cpu_profiler->FindCpuProfile(uid3));
}