- Record cache hit rates at different levels in the compilation cache
authoriposva@chromium.org <iposva@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 26 May 2009 08:10:04 +0000 (08:10 +0000)
committeriposva@chromium.org <iposva@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 26 May 2009 08:10:04 +0000 (08:10 +0000)
  for scripts.
Review URL: http://codereview.chromium.org/115592

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2052 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/compilation-cache.cc
src/counters.h

index 028ab61f96fea2b8bda477fc804d5df6c5559bf7..083f49bbbcda4b3bdaf13ba9e16db0ff0322c8d6 100644 (file)
@@ -36,7 +36,7 @@ enum {
   // The number of script generations tell how many GCs a script can
   // survive in the compilation cache, before it will be flushed if it
   // hasn't been used.
-  NUMBER_OF_SCRIPT_GENERATIONS = 5,
+  NUMBER_OF_SCRIPT_GENERATIONS = 8,
 
   // The compilation cache consists of tables - one for each entry
   // kind plus extras for the script generations.
@@ -175,6 +175,17 @@ Handle<JSFunction> CompilationCache::LookupScript(Handle<String> source,
     }
   }
 
+  static void* script_histogram = StatsTable::CreateHistogram(
+      "V8.ScriptCache",
+      0,
+      NUMBER_OF_SCRIPT_GENERATIONS,
+      NUMBER_OF_SCRIPT_GENERATIONS + 1);
+
+  if (script_histogram != NULL) {
+    // The level NUMBER_OF_SCRIPT_GENERATIONS is equivalent to a cache miss.
+    StatsTable::AddHistogramSample(script_histogram, generation - SCRIPT);
+  }
+
   // Once outside the manacles of the handle scope, we need to recheck
   // to see if we actually found a cached script. If so, we return a
   // handle created in the caller's handle scope.
index 63be956747da8bbee6cd3e43cd85a9ddfa07a8e8..5f4dca927ec3d12aa6c44e63b6d76902ebbc4152 100644 (file)
@@ -75,7 +75,7 @@ class StatsTable : public AllStatic {
   // function. min and max define the expected minimum and maximum
   // sample values. buckets is the maximum number of buckets
   // that the samples will be grouped into.
-  static void *CreateHistogram(const char* name,
+  static voidCreateHistogram(const char* name,
                                int min,
                                int max,
                                size_t buckets) {