changeset 53264:424e4908b4b8

8216424: Remove TimeLivenessAnalysis Reviewed-by: kvn, thartmann
author redestad
date Sun, 13 Jan 2019 12:50:05 +0100
parents 5d7e4d832868
children febc37adfe80
files src/hotspot/share/compiler/methodLiveness.cpp src/hotspot/share/compiler/methodLiveness.hpp src/hotspot/share/runtime/globals.hpp src/hotspot/share/runtime/java.cpp
diffstat 4 files changed, 4 insertions(+), 211 deletions(-) [+]
line wrap: on
line diff
--- a/src/hotspot/share/compiler/methodLiveness.cpp	Sat Jan 12 13:33:18 2019 +0100
+++ b/src/hotspot/share/compiler/methodLiveness.cpp	Sun Jan 13 12:50:05 2019 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,6 @@
 #include "interpreter/bytecodes.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/resourceArea.hpp"
-#include "runtime/timerTrace.hpp"
 #include "utilities/bitMap.inline.hpp"
 
 // The MethodLiveness class performs a simple liveness analysis on a method
@@ -71,64 +70,6 @@
 //    a single set (_exception_exit), losing some information but simplifying the
 //    analysis.
 
-
-//--------------------------------------------------------------------------
-// The BitCounter class is used for counting the number of bits set in
-// some BitMap.  It is only used when collecting liveness statistics.
-
-#ifndef PRODUCT
-
-class BitCounter: public BitMapClosure {
- private:
-  int _count;
- public:
-  BitCounter() : _count(0) {}
-
-  // Callback when bit in map is set
-  virtual bool do_bit(size_t offset) {
-    _count++;
-    return true;
-  }
-
-  int count() {
-    return _count;
-  }
-};
-
-
-//--------------------------------------------------------------------------
-
-
-// Counts
-long MethodLiveness::_total_bytes = 0;
-int  MethodLiveness::_total_methods = 0;
-
-long MethodLiveness::_total_blocks = 0;
-int  MethodLiveness::_max_method_blocks = 0;
-
-long MethodLiveness::_total_edges = 0;
-int  MethodLiveness::_max_block_edges = 0;
-
-long MethodLiveness::_total_exc_edges = 0;
-int  MethodLiveness::_max_block_exc_edges = 0;
-
-long MethodLiveness::_total_method_locals = 0;
-int  MethodLiveness::_max_method_locals = 0;
-
-long MethodLiveness::_total_locals_queried = 0;
-long MethodLiveness::_total_live_locals_queried = 0;
-
-long MethodLiveness::_total_visits = 0;
-
-#endif
-
-// Timers
-elapsedTimer MethodLiveness::_time_build_graph;
-elapsedTimer MethodLiveness::_time_gen_kill;
-elapsedTimer MethodLiveness::_time_flow;
-elapsedTimer MethodLiveness::_time_query;
-elapsedTimer MethodLiveness::_time_total;
-
 MethodLiveness::MethodLiveness(Arena* arena, ciMethod* method)
 #ifdef COMPILER1
   : _bci_block_start(arena, method->code_size())
@@ -146,52 +87,11 @@
     tty->print("# Computing liveness information for ");
     method()->print_short_name();
   }
-
-  if (TimeLivenessAnalysis) _time_total.start();
 #endif
 
-  {
-    TraceTime buildGraph(NULL, &_time_build_graph, TimeLivenessAnalysis);
-    init_basic_blocks();
-  }
-  {
-    TraceTime genKill(NULL, &_time_gen_kill, TimeLivenessAnalysis);
-    init_gen_kill();
-  }
-  {
-    TraceTime flow(NULL, &_time_flow, TimeLivenessAnalysis);
-    propagate_liveness();
-  }
-
-#ifndef PRODUCT
-  if (TimeLivenessAnalysis) _time_total.stop();
-
-  if (TimeLivenessAnalysis) {
-    // Collect statistics
-    _total_bytes += method()->code_size();
-    _total_methods++;
-
-    int num_blocks = _block_count;
-    _total_blocks += num_blocks;
-    _max_method_blocks = MAX2(num_blocks,_max_method_blocks);
-
-    for (int i=0; i<num_blocks; i++) {
-      BasicBlock *block = _block_list[i];
-
-      int numEdges = block->_normal_predecessors->length();
-      int numExcEdges = block->_exception_predecessors->length();
-
-      _total_edges += numEdges;
-      _total_exc_edges += numExcEdges;
-      _max_block_edges = MAX2(numEdges,_max_block_edges);
-      _max_block_exc_edges = MAX2(numExcEdges,_max_block_exc_edges);
-    }
-
-    int numLocals = _bit_map_size_bits;
-    _total_method_locals += numLocals;
-    _max_method_locals = MAX2(numLocals,_max_method_locals);
-  }
-#endif
+  init_basic_blocks();
+  init_gen_kill();
+  propagate_liveness();
 }
 
 
@@ -473,8 +373,6 @@
   MethodLivenessResult answer;
 
   if (_block_count > 0) {
-    if (TimeLivenessAnalysis) _time_total.start();
-    if (TimeLivenessAnalysis) _time_query.start();
 
     assert( 0 <= bci && bci < method()->code_size(), "bci out of range" );
     BasicBlock *block = _block_map->at(bci);
@@ -501,73 +399,12 @@
       tty->print(" @ %d : result is ", bci);
       answer.print_on(tty);
     }
-
-    if (TimeLivenessAnalysis) _time_query.stop();
-    if (TimeLivenessAnalysis) _time_total.stop();
 #endif
   }
 
-#ifndef PRODUCT
-  if (TimeLivenessAnalysis) {
-    // Collect statistics.
-    _total_locals_queried += _bit_map_size_bits;
-    BitCounter counter;
-    answer.iterate(&counter);
-    _total_live_locals_queried += counter.count();
-  }
-#endif
-
   return answer;
 }
 
-
-#ifndef PRODUCT
-
-void MethodLiveness::print_times() {
-  tty->print_cr ("Accumulated liveness analysis times/statistics:");
-  tty->print_cr ("-----------------------------------------------");
-  tty->print_cr ("  Total         : %3.3f sec.", _time_total.seconds());
-  tty->print_cr ("    Build graph : %3.3f sec. (%2.2f%%)", _time_build_graph.seconds(),
-                 _time_build_graph.seconds() * 100 / _time_total.seconds());
-  tty->print_cr ("    Gen / Kill  : %3.3f sec. (%2.2f%%)", _time_gen_kill.seconds(),
-                 _time_gen_kill.seconds() * 100 / _time_total.seconds());
-  tty->print_cr ("    Dataflow    : %3.3f sec. (%2.2f%%)", _time_flow.seconds(),
-                 _time_flow.seconds() * 100 / _time_total.seconds());
-  tty->print_cr ("    Query       : %3.3f sec. (%2.2f%%)", _time_query.seconds(),
-                 _time_query.seconds() * 100 / _time_total.seconds());
-  tty->print_cr ("  #bytes   : %8ld (%3.0f bytes per sec)",
-                 _total_bytes,
-                 _total_bytes / _time_total.seconds());
-  tty->print_cr ("  #methods : %8d (%3.0f methods per sec)",
-                 _total_methods,
-                 _total_methods / _time_total.seconds());
-  tty->print_cr ("    avg locals : %3.3f    max locals : %3d",
-                 (float)_total_method_locals / _total_methods,
-                 _max_method_locals);
-  tty->print_cr ("    avg blocks : %3.3f    max blocks : %3d",
-                 (float)_total_blocks / _total_methods,
-                 _max_method_blocks);
-  tty->print_cr ("    avg bytes  : %3.3f",
-                 (float)_total_bytes / _total_methods);
-  tty->print_cr ("  #blocks  : %8ld",
-                 _total_blocks);
-  tty->print_cr ("    avg normal predecessors    : %3.3f  max normal predecessors    : %3d",
-                 (float)_total_edges / _total_blocks,
-                 _max_block_edges);
-  tty->print_cr ("    avg exception predecessors : %3.3f  max exception predecessors : %3d",
-                 (float)_total_exc_edges / _total_blocks,
-                 _max_block_exc_edges);
-  tty->print_cr ("    avg visits                 : %3.3f",
-                 (float)_total_visits / _total_blocks);
-  tty->print_cr ("  #locals queried : %8ld    #live : %8ld   %%live : %2.2f%%",
-                 _total_locals_queried,
-                 _total_live_locals_queried,
-                 100.0 * _total_live_locals_queried / _total_locals_queried);
-}
-
-#endif
-
-
 MethodLiveness::BasicBlock::BasicBlock(MethodLiveness *analyzer, int start, int limit) :
          _entry(analyzer->arena(),          analyzer->bit_map_size_bits()),
          _normal_exit(analyzer->arena(),    analyzer->bit_map_size_bits()),
--- a/src/hotspot/share/compiler/methodLiveness.hpp	Sat Jan 12 13:33:18 2019 +0100
+++ b/src/hotspot/share/compiler/methodLiveness.hpp	Sun Jan 13 12:50:05 2019 +0100
@@ -222,41 +222,6 @@
   BasicBlock *work_list_get();
   void work_list_add(BasicBlock *block);
 
-  // -- Timing and Statistics.
-
-
-  // Timers
-  static elapsedTimer _time_build_graph;
-  static elapsedTimer _time_gen_kill;
-  static elapsedTimer _time_flow;
-  static elapsedTimer _time_query;
-  static elapsedTimer _time_total;
-
-#ifndef PRODUCT
-
-  // Counts
-  static long _total_bytes;
-  static int  _total_methods;
-
-  static long _total_blocks;
-  static int  _max_method_blocks;
-
-  static long _total_edges;
-  static int  _max_block_edges;
-
-  static long _total_exc_edges;
-  static int  _max_block_exc_edges;
-
-  static long _total_method_locals;
-  static int  _max_method_locals;
-
-  static long _total_locals_queried;
-  static long _total_live_locals_queried;
-
-  static long _total_visits;
-
-#endif
-
  public:
   // Create a liveness analyzer for a method
   MethodLiveness(Arena* arena, ciMethod* method);
@@ -271,7 +236,6 @@
   const BitMap& get_bci_block_start() const { return _bci_block_start; }
 #endif // COMPILER1
 
-  static void print_times() PRODUCT_RETURN;
 };
 
 #endif // SHARE_COMPILER_METHODLIVENESS_HPP
--- a/src/hotspot/share/runtime/globals.hpp	Sat Jan 12 13:33:18 2019 +0100
+++ b/src/hotspot/share/runtime/globals.hpp	Sun Jan 13 12:50:05 2019 +0100
@@ -1327,9 +1327,6 @@
   develop(bool, TypeProfileCasts,  true,                                    \
           "treat casts like calls for purposes of type profiling")          \
                                                                             \
-  develop(bool, TimeLivenessAnalysis, false,                                \
-          "Time computation of bytecode liveness analysis")                 \
-                                                                            \
   develop(bool, TraceLivenessGen, false,                                    \
           "Trace the generation of liveness analysis information")          \
                                                                             \
--- a/src/hotspot/share/runtime/java.cpp	Sat Jan 12 13:33:18 2019 +0100
+++ b/src/hotspot/share/runtime/java.cpp	Sun Jan 13 12:50:05 2019 +0100
@@ -81,7 +81,6 @@
 #endif
 #ifdef COMPILER2
 #include "code/compiledIC.hpp"
-#include "compiler/methodLiveness.hpp"
 #include "opto/compile.hpp"
 #include "opto/indexSet.hpp"
 #include "opto/runtime.hpp"
@@ -258,10 +257,6 @@
   if (PrintLockStatistics || PrintPreciseBiasedLockingStatistics || PrintPreciseRTMLockingStatistics) {
     OptoRuntime::print_named_counters();
   }
-
-  if (TimeLivenessAnalysis) {
-    MethodLiveness::print_times();
-  }
 #ifdef ASSERT
   if (CollectIndexSetStatistics) {
     IndexSet::print_statistics();