src/hotspot/share/runtime/thread.hpp
changeset 54669 ad45b3802d4e
parent 54647 c0d9bc9b4e1f
child 54732 2d012a75d35c
equal deleted inserted replaced
54668:0bda2308eded 54669:ad45b3802d4e
    85 
    85 
    86 class GCTaskQueue;
    86 class GCTaskQueue;
    87 class ThreadClosure;
    87 class ThreadClosure;
    88 class ICRefillVerifier;
    88 class ICRefillVerifier;
    89 class IdealGraphPrinter;
    89 class IdealGraphPrinter;
       
    90 
       
    91 class JVMCIEnv;
       
    92 class JVMCIPrimitiveArray;
    90 
    93 
    91 class Metadata;
    94 class Metadata;
    92 class ResourceArea;
    95 class ResourceArea;
    93 
    96 
    94 DEBUG_ONLY(class ResourceMark;)
    97 DEBUG_ONLY(class ResourceMark;)
  1130   // and re-execute a failed heap allocation in the interpreter.
  1133   // and re-execute a failed heap allocation in the interpreter.
  1131   bool      _in_retryable_allocation;
  1134   bool      _in_retryable_allocation;
  1132 
  1135 
  1133   // An id of a speculation that JVMCI compiled code can use to further describe and
  1136   // An id of a speculation that JVMCI compiled code can use to further describe and
  1134   // uniquely identify the  speculative optimization guarded by the uncommon trap
  1137   // uniquely identify the  speculative optimization guarded by the uncommon trap
  1135   long       _pending_failed_speculation;
  1138   jlong     _pending_failed_speculation;
  1136 
  1139 
  1137   // These fields are mutually exclusive in terms of live ranges.
  1140   // These fields are mutually exclusive in terms of live ranges.
  1138   union {
  1141   union {
  1139     // Communicates the pc at which the most recent implicit exception occurred
  1142     // Communicates the pc at which the most recent implicit exception occurred
  1140     // from the signal handler to a deoptimization stub.
  1143     // from the signal handler to a deoptimization stub.
  1147   // Support for high precision, thread sensitive counters in JVMCI compiled code.
  1150   // Support for high precision, thread sensitive counters in JVMCI compiled code.
  1148   jlong*    _jvmci_counters;
  1151   jlong*    _jvmci_counters;
  1149 
  1152 
  1150  public:
  1153  public:
  1151   static jlong* _jvmci_old_thread_counters;
  1154   static jlong* _jvmci_old_thread_counters;
  1152   static void collect_counters(typeArrayOop array);
  1155   static void collect_counters(JVMCIEnv* JVMCIENV, JVMCIPrimitiveArray array);
  1153  private:
  1156  private:
  1154 #endif // INCLUDE_JVMCI
  1157 #endif // INCLUDE_JVMCI
  1155 
  1158 
  1156   StackGuardState  _stack_guard_state;
  1159   StackGuardState  _stack_guard_state;
  1157 
  1160 
  1530   MemRegion deferred_card_mark() const           { return _deferred_card_mark; }
  1533   MemRegion deferred_card_mark() const           { return _deferred_card_mark; }
  1531   void set_deferred_card_mark(MemRegion mr)      { _deferred_card_mark = mr;   }
  1534   void set_deferred_card_mark(MemRegion mr)      { _deferred_card_mark = mr;   }
  1532 
  1535 
  1533 #if INCLUDE_JVMCI
  1536 #if INCLUDE_JVMCI
  1534   int  pending_deoptimization() const             { return _pending_deoptimization; }
  1537   int  pending_deoptimization() const             { return _pending_deoptimization; }
  1535   long pending_failed_speculation() const         { return _pending_failed_speculation; }
  1538   jlong pending_failed_speculation() const        { return _pending_failed_speculation; }
  1536   bool has_pending_monitorenter() const           { return _pending_monitorenter; }
  1539   bool has_pending_monitorenter() const           { return _pending_monitorenter; }
  1537   void set_pending_monitorenter(bool b)           { _pending_monitorenter = b; }
  1540   void set_pending_monitorenter(bool b)           { _pending_monitorenter = b; }
  1538   void set_pending_deoptimization(int reason)     { _pending_deoptimization = reason; }
  1541   void set_pending_deoptimization(int reason)     { _pending_deoptimization = reason; }
  1539   void set_pending_failed_speculation(long failed_speculation) { _pending_failed_speculation = failed_speculation; }
  1542   void set_pending_failed_speculation(jlong failed_speculation) { _pending_failed_speculation = failed_speculation; }
  1540   void set_pending_transfer_to_interpreter(bool b) { _pending_transfer_to_interpreter = b; }
  1543   void set_pending_transfer_to_interpreter(bool b) { _pending_transfer_to_interpreter = b; }
  1541   void set_jvmci_alternate_call_target(address a) { assert(_jvmci._alternate_call_target == NULL, "must be"); _jvmci._alternate_call_target = a; }
  1544   void set_jvmci_alternate_call_target(address a) { assert(_jvmci._alternate_call_target == NULL, "must be"); _jvmci._alternate_call_target = a; }
  1542   void set_jvmci_implicit_exception_pc(address a) { assert(_jvmci._implicit_exception_pc == NULL, "must be"); _jvmci._implicit_exception_pc = a; }
  1545   void set_jvmci_implicit_exception_pc(address a) { assert(_jvmci._implicit_exception_pc == NULL, "must be"); _jvmci._implicit_exception_pc = a; }
  1543 
  1546 
  1544   virtual bool in_retryable_allocation() const    { return _in_retryable_allocation; }
  1547   virtual bool in_retryable_allocation() const    { return _in_retryable_allocation; }