Revision: 5972
Author: [email protected]
Date: Fri Dec 10 06:49:24 2010
Log: Fix bug that disabled optimization when profiling.

Review URL: http://codereview.chromium.org/5720003
http://code.google.com/p/v8/source/detail?r=5972

Modified:
 /branches/bleeding_edge/src/runtime-profiler.cc

=======================================
--- /branches/bleeding_edge/src/runtime-profiler.cc     Fri Dec 10 04:00:26 2010
+++ /branches/bleeding_edge/src/runtime-profiler.cc     Fri Dec 10 06:49:24 2010
@@ -348,9 +348,32 @@
   node->set_next(optimize_soon_list);
   optimize_soon_list = node;
 }
+
+
+static void UpdateStateRatio(SamplerState current_state) {
+  static const int kStateWindowSize = 128;
+  static SamplerState state_window[kStateWindowSize];
+  static int state_window_position = 0;
+  static int state_counts[2] = { kStateWindowSize, 0 };
+
+  SamplerState old_state = state_window[state_window_position];
+  state_counts[old_state]--;
+  state_window[state_window_position] = current_state;
+  state_counts[current_state]++;
+  ASSERT(IsPowerOf2(kStateWindowSize));
+  state_window_position = (state_window_position + 1) &
+      (kStateWindowSize - 1);
+  NoBarrier_Store(&js_ratio, state_counts[IN_JS_STATE] * 100 /
+                  kStateWindowSize);
+}


 void RuntimeProfiler::NotifyTick() {
+  // Record state sample.
+  SamplerState state = Top::IsInJSState()
+      ? IN_JS_STATE
+      : IN_NON_JS_STATE;
+  UpdateStateRatio(state);
   StackGuard::RequestRuntimeProfilerTick();
 }

@@ -402,24 +425,6 @@
 int RuntimeProfiler::SamplerWindowSize() {
   return kSamplerWindowSize;
 }
-
-
-static void AddStateSample(SamplerState current_state) {
-  static const int kStateWindowSize = 128;
-  static SamplerState state_window[kStateWindowSize];
-  static int state_window_position = 0;
-  static int state_counts[2] = { kStateWindowSize, 0 };
-
-  SamplerState old_state = state_window[state_window_position];
-  state_counts[old_state]--;
-  state_window[state_window_position] = current_state;
-  state_counts[current_state]++;
-  ASSERT(IsPowerOf2(kStateWindowSize));
-  state_window_position = (state_window_position + 1) &
-      (kStateWindowSize - 1);
-  NoBarrier_Store(&js_ratio, state_counts[IN_JS_STATE] * 100 /
-                  kStateWindowSize);
-}


 bool RuntimeProfilerRateLimiter::SuspendIfNecessary() {
@@ -431,10 +436,8 @@
       !CpuProfiler::is_profiling() &&
       !(FLAG_prof && FLAG_prof_auto)) {
     if (Top::IsInJSState()) {
-      AddStateSample(IN_JS_STATE);
       non_js_ticks_ = 0;
     } else {
-      AddStateSample(IN_NON_JS_STATE);
       if (non_js_ticks_ < kNonJSTicksThreshold) {
         ++non_js_ticks_;
       } else {

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to