Commit d38bbe35 authored by yurys@chromium.org's avatar yurys@chromium.org

Return start/end profiling time in microseconds instead of milliseconds

The start and end time are now measured in microseconds and the type is int64_t. This way it seems more natural as we are going to support submilisecond sampling rate soon. Also it fixes cctest/test-cpu-profiler/ProfileStartEndTime test failure caused by comparison between long double and double.

TEST=cctest/test-cpu-profiler/ProfileStartEndTime
BUG=v8:2824
R=alph@chromium.org, bmeurer@chromium.org

Review URL: https://codereview.chromium.org/22172002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16049 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent cb68e2cd
...@@ -149,16 +149,16 @@ class V8EXPORT CpuProfile { ...@@ -149,16 +149,16 @@ class V8EXPORT CpuProfile {
const CpuProfileNode* GetSample(int index) const; const CpuProfileNode* GetSample(int index) const;
/** /**
* Returns time when the profile recording started (in milliseconds * Returns time when the profile recording started (in microseconds
* since the Epoch). * since the Epoch).
*/ */
double GetStartTime() const; int64_t GetStartTime() const;
/** /**
* Returns time when the profile recording was stopped (in milliseconds * Returns time when the profile recording was stopped (in microseconds
* since the Epoch). * since the Epoch).
*/ */
double GetEndTime() const; int64_t GetEndTime() const;
/** /**
* Deletes the profile and removes it from CpuProfiler's list. * Deletes the profile and removes it from CpuProfiler's list.
......
...@@ -7591,15 +7591,15 @@ const CpuProfileNode* CpuProfile::GetSample(int index) const { ...@@ -7591,15 +7591,15 @@ const CpuProfileNode* CpuProfile::GetSample(int index) const {
} }
double CpuProfile::GetStartTime() const { int64_t CpuProfile::GetStartTime() const {
const i::CpuProfile* profile = reinterpret_cast<const i::CpuProfile*>(this); const i::CpuProfile* profile = reinterpret_cast<const i::CpuProfile*>(this);
return profile->start_time_ms(); return profile->start_time_us();
} }
double CpuProfile::GetEndTime() const { int64_t CpuProfile::GetEndTime() const {
const i::CpuProfile* profile = reinterpret_cast<const i::CpuProfile*>(this); const i::CpuProfile* profile = reinterpret_cast<const i::CpuProfile*>(this);
return profile->end_time_ms(); return profile->end_time_us();
} }
......
...@@ -376,8 +376,8 @@ CpuProfile::CpuProfile(const char* title, unsigned uid, bool record_samples) ...@@ -376,8 +376,8 @@ CpuProfile::CpuProfile(const char* title, unsigned uid, bool record_samples)
: title_(title), : title_(title),
uid_(uid), uid_(uid),
record_samples_(record_samples), record_samples_(record_samples),
start_time_ms_(OS::TimeCurrentMillis()), start_time_us_(OS::Ticks()),
end_time_ms_(0) { end_time_us_(0) {
} }
...@@ -388,13 +388,13 @@ void CpuProfile::AddPath(const Vector<CodeEntry*>& path) { ...@@ -388,13 +388,13 @@ void CpuProfile::AddPath(const Vector<CodeEntry*>& path) {
void CpuProfile::CalculateTotalTicksAndSamplingRate() { void CpuProfile::CalculateTotalTicksAndSamplingRate() {
end_time_ms_ = OS::TimeCurrentMillis(); end_time_us_ = OS::Ticks();
top_down_.CalculateTotalTicks(); top_down_.CalculateTotalTicks();
double duration = end_time_ms_ - start_time_ms_; double duration_ms = (end_time_us_ - start_time_us_) / 1000.;
if (duration < 1) duration = 1; if (duration_ms < 1) duration_ms = 1;
unsigned ticks = top_down_.root()->total_ticks(); unsigned ticks = top_down_.root()->total_ticks();
double rate = ticks / duration; double rate = ticks / duration_ms;
top_down_.SetTickRatePerMs(rate); top_down_.SetTickRatePerMs(rate);
} }
......
...@@ -216,8 +216,8 @@ class CpuProfile { ...@@ -216,8 +216,8 @@ class CpuProfile {
int samples_count() const { return samples_.length(); } int samples_count() const { return samples_.length(); }
ProfileNode* sample(int index) const { return samples_.at(index); } ProfileNode* sample(int index) const { return samples_.at(index); }
double start_time_ms() const { return start_time_ms_; } int64_t start_time_us() const { return start_time_us_; }
double end_time_ms() const { return end_time_ms_; } int64_t end_time_us() const { return end_time_us_; }
void UpdateTicksScale(); void UpdateTicksScale();
...@@ -228,8 +228,8 @@ class CpuProfile { ...@@ -228,8 +228,8 @@ class CpuProfile {
const char* title_; const char* title_;
unsigned uid_; unsigned uid_;
bool record_samples_; bool record_samples_;
double start_time_ms_; int64_t start_time_us_;
double end_time_ms_; int64_t end_time_us_;
List<ProfileNode*> samples_; List<ProfileNode*> samples_;
ProfileTree top_down_; ProfileTree top_down_;
......
...@@ -415,13 +415,13 @@ TEST(ProfileStartEndTime) { ...@@ -415,13 +415,13 @@ TEST(ProfileStartEndTime) {
v8::HandleScope scope(env->GetIsolate()); v8::HandleScope scope(env->GetIsolate());
v8::CpuProfiler* cpu_profiler = env->GetIsolate()->GetCpuProfiler(); v8::CpuProfiler* cpu_profiler = env->GetIsolate()->GetCpuProfiler();
double time_before_profiling = i::OS::TimeCurrentMillis(); double time_before_profiling = i::OS::Ticks();
v8::Local<v8::String> profile_name = v8::String::New("test"); v8::Local<v8::String> profile_name = v8::String::New("test");
cpu_profiler->StartCpuProfiling(profile_name); cpu_profiler->StartCpuProfiling(profile_name);
const v8::CpuProfile* profile = cpu_profiler->StopCpuProfiling(profile_name); const v8::CpuProfile* profile = cpu_profiler->StopCpuProfiling(profile_name);
CHECK(time_before_profiling <= profile->GetStartTime()); CHECK(time_before_profiling <= profile->GetStartTime());
CHECK(profile->GetStartTime() <= profile->GetEndTime()); CHECK(profile->GetStartTime() <= profile->GetEndTime());
CHECK(profile->GetEndTime() <= i::OS::TimeCurrentMillis()); CHECK(profile->GetEndTime() <= i::OS::Ticks());
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment