< prev index next >

src/hotspot/share/runtime/deoptimization.hpp

Print this page
*** 155,11 ***
      _reason_bits = 5,
      _debug_id_bits = 23,
      _action_shift = 0,
      _reason_shift = _action_shift+_action_bits,
      _debug_id_shift = _reason_shift+_reason_bits,
!     BC_CASE_LIMIT = PRODUCT_ONLY(1) NOT_PRODUCT(4) // for _deoptimization_hist
    };
  
    enum UnpackType {
      Unpack_deopt                = 0, // normal deoptimization, use pc computed in unpack_vframe_on_stack
      Unpack_exception            = 1, // exception is pending
--- 155,11 ---
      _reason_bits = 5,
      _debug_id_bits = 23,
      _action_shift = 0,
      _reason_shift = _action_shift+_action_bits,
      _debug_id_shift = _reason_shift+_reason_bits,
!     BC_CASE_LIMIT = 4 // for _deoptimization_hist
    };
  
    enum UnpackType {
      Unpack_deopt                = 0, // normal deoptimization, use pc computed in unpack_vframe_on_stack
      Unpack_exception            = 1, // exception is pending

*** 324,13 ***
    // VM_DeoptimizeFrame otherwise deoptimize directly.
    static void deoptimize_frame(JavaThread* thread, intptr_t* id, DeoptReason reason);
    static void deoptimize_frame(JavaThread* thread, intptr_t* id);
  
    // Statistics
!   static void gather_statistics(DeoptReason reason, DeoptAction action,
                                  Bytecodes::Code bc = Bytecodes::_illegal);
    static void print_statistics();
  
    // How much room to adjust the last frame's SP by, to make space for
    // the callee's interpreter frame (which expects locals to be next to
    // incoming arguments)
    static int last_frame_adjust(int callee_parameters, int callee_locals);
--- 324,16 ---
    // VM_DeoptimizeFrame otherwise deoptimize directly.
    static void deoptimize_frame(JavaThread* thread, intptr_t* id, DeoptReason reason);
    static void deoptimize_frame(JavaThread* thread, intptr_t* id);
  
    // Statistics
!   static void gather_statistics(nmethod* nm, DeoptReason reason, DeoptAction action,
                                  Bytecodes::Code bc = Bytecodes::_illegal);
    static void print_statistics();
+   static void print_statistics_on(outputStream* st);
+ 
+   static void print_statistics_on(const char* title, int lvl, outputStream* st);
  
    // How much room to adjust the last frame's SP by, to make space for
    // the callee's interpreter frame (which expects locals to be next to
    // incoming arguments)
    static int last_frame_adjust(int callee_parameters, int callee_locals);

*** 482,13 ***
  
    static DeoptAction _unloaded_action; // == Action_reinterpret;
    static const char* _trap_reason_name[];
    static const char* _trap_action_name[];
  
!   static juint _deoptimization_hist[Reason_LIMIT][1+Action_LIMIT][BC_CASE_LIMIT];
    // Note:  Histogram array size is 1-2 Kb.
  
   public:
    static void update_method_data_from_interpreter(MethodData* trap_mdo, int trap_bci, int reason);
  };
  
  #endif // SHARE_RUNTIME_DEOPTIMIZATION_HPP
--- 485,16 ---
  
    static DeoptAction _unloaded_action; // == Action_reinterpret;
    static const char* _trap_reason_name[];
    static const char* _trap_action_name[];
  
!   static juint _deoptimization_hist[1 + 4 + 5][Reason_LIMIT][1+Action_LIMIT][BC_CASE_LIMIT];
    // Note:  Histogram array size is 1-2 Kb.
  
   public:
    static void update_method_data_from_interpreter(MethodData* trap_mdo, int trap_bci, int reason);
+ 
+   static void init_counters();
+   static void print_counters_on(outputStream* st);
  };
  
  #endif // SHARE_RUNTIME_DEOPTIMIZATION_HPP
< prev index next >