Author: [email protected]
Date: Thu May 14 03:29:48 2009
New Revision: 1946

Modified:
    branches/bleeding_edge/src/codegen.cc
    branches/bleeding_edge/src/compiler.cc
    branches/bleeding_edge/src/ia32/codegen-ia32.cc
    branches/bleeding_edge/src/rewriter.cc
    branches/bleeding_edge/src/usage-analyzer.cc
    branches/bleeding_edge/src/v8-counters.h

Log:
Add more detailed timers of the various compilation passes.  The
aggregate compilation time timer is the same as it was before.

Review URL: http://codereview.chromium.org/115344

Modified: branches/bleeding_edge/src/codegen.cc
==============================================================================
--- branches/bleeding_edge/src/codegen.cc       (original)
+++ branches/bleeding_edge/src/codegen.cc       Thu May 14 03:29:48 2009
@@ -161,7 +161,9 @@
      return Handle<Code>::null();
    }

-  // Allocate and install the code.
+  // Allocate and install the code.  Time the rest of this function as
+  // code creation.
+  HistogramTimerScope timer(&Counters::code_creation);
    CodeDesc desc;
    cgen.masm()->GetCode(&desc);
    ScopeInfo<> sinfo(flit->scope());

Modified: branches/bleeding_edge/src/compiler.cc
==============================================================================
--- branches/bleeding_edge/src/compiler.cc      (original)
+++ branches/bleeding_edge/src/compiler.cc      Thu May 14 03:29:48 2009
@@ -52,12 +52,15 @@
      return Handle<Code>::null();
    }

-  // Compute top scope and allocate variables. For lazy compilation
-  // the top scope only contains the single lazily compiled function,
-  // so this doesn't re-allocate variables repeatedly.
-  Scope* top = literal->scope();
-  while (top->outer_scope() != NULL) top = top->outer_scope();
-  top->AllocateVariables(context);
+  {
+    // Compute top scope and allocate variables. For lazy compilation
+    // the top scope only contains the single lazily compiled function,
+    // so this doesn't re-allocate variables repeatedly.
+    HistogramTimerScope timer(&Counters::variable_allocation);
+    Scope* top = literal->scope();
+    while (top->outer_scope() != NULL) top = top->outer_scope();
+    top->AllocateVariables(context);
+  }

  #ifdef DEBUG
    if (Bootstrapper::IsActive() ?

Modified: branches/bleeding_edge/src/ia32/codegen-ia32.cc
==============================================================================
--- branches/bleeding_edge/src/ia32/codegen-ia32.cc     (original)
+++ branches/bleeding_edge/src/ia32/codegen-ia32.cc     Thu May 14 03:29:48 2009
@@ -116,6 +116,7 @@
    JumpTarget::set_compiling_deferred_code(false);

    {
+    HistogramTimerScope codegen_timer(&Counters::code_generation);
      CodeGenState state(this);

      // Entry:
@@ -318,6 +319,7 @@
    if (HasStackOverflow()) {
      ClearDeferred();
    } else {
+    HistogramTimerScope  
deferred_timer(&Counters::deferred_code_generation);
      JumpTarget::set_compiling_deferred_code(true);
      ProcessDeferred();
      JumpTarget::set_compiling_deferred_code(false);

Modified: branches/bleeding_edge/src/rewriter.cc
==============================================================================
--- branches/bleeding_edge/src/rewriter.cc      (original)
+++ branches/bleeding_edge/src/rewriter.cc      Thu May 14 03:29:48 2009
@@ -803,6 +803,7 @@


  bool Rewriter::Process(FunctionLiteral* function) {
+  HistogramTimerScope timer(&Counters::rewriting);
    Scope* scope = function->scope();
    if (scope->is_function_scope()) return true;

@@ -823,6 +824,7 @@
    ZoneList<Statement*>* body = function->body();

    if (FLAG_optimize_ast && !body->is_empty()) {
+    HistogramTimerScope timer(&Counters::ast_optimization);
      AstOptimizer optimizer(function->name());
      optimizer.Optimize(body);
      if (optimizer.HasStackOverflow()) {

Modified: branches/bleeding_edge/src/usage-analyzer.cc
==============================================================================
--- branches/bleeding_edge/src/usage-analyzer.cc        (original)
+++ branches/bleeding_edge/src/usage-analyzer.cc        Thu May 14 03:29:48 2009
@@ -444,6 +444,7 @@

  bool AnalyzeVariableUsage(FunctionLiteral* lit) {
    if (!FLAG_usage_computation) return true;
+  HistogramTimerScope timer(&Counters::usage_analysis);
    return UsageComputer::Traverse(lit);
  }


Modified: branches/bleeding_edge/src/v8-counters.h
==============================================================================
--- branches/bleeding_edge/src/v8-counters.h    (original)
+++ branches/bleeding_edge/src/v8-counters.h    Thu May 14 03:29:48 2009
@@ -32,16 +32,27 @@

  namespace v8 { namespace internal {

-#define HISTOGRAM_TIMER_LIST(HT)                                 \
-  HT(gc_compactor, V8.GCCompactor) /* GC Compactor time */       \
-  HT(gc_scavenger, V8.GCScavenger) /* GC Scavenger time */       \
-  HT(gc_context, V8.GCContext)     /* GC context cleanup time */ \
-  HT(compile, V8.Compile)          /* Compile time*/             \
-  HT(compile_eval, V8.CompileEval) /* Eval compile time */       \
-  HT(compile_lazy, V8.CompileLazy) /* Lazy compile time */       \
-  HT(parse, V8.Parse)              /* Parse time */              \
-  HT(parse_lazy, V8.ParseLazy)     /* Lazy parse time */         \
-  HT(pre_parse, V8.PreParse)       /* Pre-parse time */
+#define HISTOGRAM_TIMER_LIST(HT)                                      \
+  /* Garbage collection timers. */                                    \
+  HT(gc_compactor, V8.GCCompactor)                                    \
+  HT(gc_scavenger, V8.GCScavenger)                                    \
+  HT(gc_context, V8.GCContext) /* GC context cleanup time */          \
+  /* Parsing timers. */                                               \
+  HT(parse, V8.Parse)                                                 \
+  HT(parse_lazy, V8.ParseLazy)                                        \
+  HT(pre_parse, V8.PreParse)                                          \
+  /* Total compilation times. */                                      \
+  HT(compile, V8.Compile)                                             \
+  HT(compile_eval, V8.CompileEval)                                    \
+  HT(compile_lazy, V8.CompileLazy)                                    \
+  /* Individual compiler passes. */                                   \
+  HT(rewriting, V8.Rewriting)                                         \
+  HT(usage_analysis, V8.UsageAnalysis)                                \
+  HT(variable_allocation, V8.VariableAllocation)                      \
+  HT(ast_optimization, V8.ASTOptimization)                            \
+  HT(code_generation, V8.CodeGeneration)                              \
+  HT(deferred_code_generation, V8.DeferredCodeGeneration)             \
+  HT(code_creation, V8.CodeCreation)

  // WARNING: STATS_COUNTER_LIST_* is a very large macro that is causing MSVC
  // Intellisense to crash.  It was broken into two macros (each of length 40

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

Reply via email to