Mercurial > hg > truffle
diff src/share/vm/runtime/deoptimization.hpp @ 12699:38b84d5a66fd
Start passing down a 'speculation id' to deoptimizations.
Use it to record GuardNode id during guard lowering as a debug feature for now
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 06 Nov 2013 14:53:31 +0100 |
parents | 359f7e70ae7f |
children | a36839dafe50 |
line wrap: on
line diff
--- a/src/share/vm/runtime/deoptimization.hpp Wed Nov 06 18:49:59 2013 +0100 +++ b/src/share/vm/runtime/deoptimization.hpp Wed Nov 06 14:53:31 2013 +0100 @@ -102,8 +102,10 @@ enum { _action_bits = 3, _reason_bits = 5, + _speculation_id_bits = 16, _action_shift = 0, _reason_shift = _action_shift+_action_bits, + _speculation_id_shift = _reason_shift+_reason_bits, BC_CASE_LIMIT = PRODUCT_ONLY(1) NOT_PRODUCT(4) // for _deoptimization_hist }; @@ -286,6 +288,14 @@ // standard action for unloaded CP entry return _unloaded_action; } + static short trap_request_speculation_id(int trap_request) { + if (trap_request < 0) + return (DeoptAction) + ((~(trap_request) >> _speculation_id_shift) & right_n_bits(_speculation_id_bits)); + else + // standard action for unloaded CP entry + return 0; + } static int trap_request_index(int trap_request) { if (trap_request < 0) return -1;