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;