< prev index next > src/hotspot/share/runtime/deoptimization.hpp
Print this page
_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
+ 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
// 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,
+ 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);
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];
+ 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 >