comparison src/share/vm/runtime/deoptimization.hpp @ 13641:5a9afbf72714

Add a speculation oop for uncommon trap deoptimization. Save it in the SpeculationLog during deoptimization.
author Gilles Duboscq <duboscq@ssw.jku.at>
date Thu, 12 Dec 2013 15:13:02 +0100
parents 51e97f88c771
children a9604b40f5e7
comparison
equal deleted inserted replaced
13640:bfe7a8c8c3c6 13641:5a9afbf72714
103 }; 103 };
104 104
105 enum { 105 enum {
106 _action_bits = 3, 106 _action_bits = 3,
107 _reason_bits = 5, 107 _reason_bits = 5,
108 _speculation_id_bits = 23, 108 _debug_id_bits = 23,
109 _action_shift = 0, 109 _action_shift = 0,
110 _reason_shift = _action_shift+_action_bits, 110 _reason_shift = _action_shift+_action_bits,
111 _speculation_id_shift = _reason_shift+_reason_bits, 111 _debug_id_shift = _reason_shift+_reason_bits,
112 BC_CASE_LIMIT = PRODUCT_ONLY(1) NOT_PRODUCT(4) // for _deoptimization_hist 112 BC_CASE_LIMIT = PRODUCT_ONLY(1) NOT_PRODUCT(4) // for _deoptimization_hist
113 }; 113 };
114 114
115 enum UnpackType { 115 enum UnpackType {
116 Unpack_deopt = 0, // normal deoptimization, use pc computed in unpack_vframe_on_stack 116 Unpack_deopt = 0, // normal deoptimization, use pc computed in unpack_vframe_on_stack
292 ((~(trap_request) >> _action_shift) & right_n_bits(_action_bits)); 292 ((~(trap_request) >> _action_shift) & right_n_bits(_action_bits));
293 else 293 else
294 // standard action for unloaded CP entry 294 // standard action for unloaded CP entry
295 return _unloaded_action; 295 return _unloaded_action;
296 } 296 }
297 static short trap_request_speculation_id(int trap_request) { 297 static short trap_request_debug_id(int trap_request) {
298 if (trap_request < 0) 298 if (trap_request < 0)
299 return (DeoptAction) 299 return (DeoptAction)
300 ((~(trap_request) >> _speculation_id_shift) & right_n_bits(_speculation_id_bits)); 300 ((~(trap_request) >> _debug_id_shift) & right_n_bits(_debug_id_bits));
301 else 301 else
302 // standard action for unloaded CP entry 302 // standard action for unloaded CP entry
303 return 0; 303 return 0;
304 } 304 }
305 static int trap_request_index(int trap_request) { 305 static int trap_request_index(int trap_request) {