hotspot/src/share/vm/runtime/thread.hpp
changeset 20707 b3b658c6d1f8
parent 20703 2de7fe0e9693
child 22838 82c7497fbad4
child 22551 9bf46d16dcc6
child 22539 a27fa687eca8
equal deleted inserted replaced
20703:2de7fe0e9693 20707:b3b658c6d1f8
   921   volatile oop     _exception_oop;               // Exception thrown in compiled code
   921   volatile oop     _exception_oop;               // Exception thrown in compiled code
   922   volatile address _exception_pc;                // PC where exception happened
   922   volatile address _exception_pc;                // PC where exception happened
   923   volatile address _exception_handler_pc;        // PC for handler of exception
   923   volatile address _exception_handler_pc;        // PC for handler of exception
   924   volatile int     _is_method_handle_return;     // true (== 1) if the current exception PC is a MethodHandle call site.
   924   volatile int     _is_method_handle_return;     // true (== 1) if the current exception PC is a MethodHandle call site.
   925 
   925 
   926   // support for compilation
       
   927   bool    _is_compiling;                         // is true if a compilation is active inthis thread (one compilation per thread possible)
       
   928 
       
   929   // support for JNI critical regions
   926   // support for JNI critical regions
   930   jint    _jni_active_critical;                  // count of entries into JNI critical region
   927   jint    _jni_active_critical;                  // count of entries into JNI critical region
   931 
   928 
   932   // For deadlock detection.
   929   // For deadlock detection.
   933   int _depth_first_number;
   930   int _depth_first_number;
  1002 
   999 
  1003   void cleanup_failed_attach_current_thread();
  1000   void cleanup_failed_attach_current_thread();
  1004 
  1001 
  1005   // Testers
  1002   // Testers
  1006   virtual bool is_Java_thread() const            { return true;  }
  1003   virtual bool is_Java_thread() const            { return true;  }
  1007 
       
  1008   // compilation
       
  1009   void set_is_compiling(bool f)                  { _is_compiling = f; }
       
  1010   bool is_compiling() const                      { return _is_compiling; }
       
  1011 
  1004 
  1012   // Thread chain operations
  1005   // Thread chain operations
  1013   JavaThread* next() const                       { return _next; }
  1006   JavaThread* next() const                       { return _next; }
  1014   void set_next(JavaThread* p)                   { _next = p; }
  1007   void set_next(JavaThread* p)                   { _next = p; }
  1015 
  1008 
  1814 class CompilerThread : public JavaThread {
  1807 class CompilerThread : public JavaThread {
  1815   friend class VMStructs;
  1808   friend class VMStructs;
  1816  private:
  1809  private:
  1817   CompilerCounters* _counters;
  1810   CompilerCounters* _counters;
  1818 
  1811 
  1819   ciEnv*        _env;
  1812   ciEnv*            _env;
  1820   CompileLog*   _log;
  1813   CompileLog*       _log;
  1821   CompileTask*  _task;
  1814   CompileTask*      _task;
  1822   CompileQueue* _queue;
  1815   CompileQueue*     _queue;
  1823   BufferBlob*   _buffer_blob;
  1816   BufferBlob*       _buffer_blob;
  1824 
  1817 
  1825   nmethod*      _scanned_nmethod;  // nmethod being scanned by the sweeper
  1818   nmethod*          _scanned_nmethod;  // nmethod being scanned by the sweeper
       
  1819   AbstractCompiler* _compiler;
  1826 
  1820 
  1827  public:
  1821  public:
  1828 
  1822 
  1829   static CompilerThread* current();
  1823   static CompilerThread* current();
  1830 
  1824 
  1832 
  1826 
  1833   bool is_Compiler_thread() const                { return true; }
  1827   bool is_Compiler_thread() const                { return true; }
  1834   // Hide this compiler thread from external view.
  1828   // Hide this compiler thread from external view.
  1835   bool is_hidden_from_external_view() const      { return true; }
  1829   bool is_hidden_from_external_view() const      { return true; }
  1836 
  1830 
  1837   CompileQueue* queue()                          { return _queue; }
  1831   void set_compiler(AbstractCompiler* c)         { _compiler = c; }
  1838   CompilerCounters* counters()                   { return _counters; }
  1832   AbstractCompiler* compiler() const             { return _compiler; }
       
  1833 
       
  1834   CompileQueue* queue()        const             { return _queue; }
       
  1835   CompilerCounters* counters() const             { return _counters; }
  1839 
  1836 
  1840   // Get/set the thread's compilation environment.
  1837   // Get/set the thread's compilation environment.
  1841   ciEnv*        env()                            { return _env; }
  1838   ciEnv*        env()                            { return _env; }
  1842   void          set_env(ciEnv* env)              { _env = env; }
  1839   void          set_env(ciEnv* env)              { _env = env; }
  1843 
  1840 
  1844   BufferBlob*   get_buffer_blob()                { return _buffer_blob; }
  1841   BufferBlob*   get_buffer_blob() const          { return _buffer_blob; }
  1845   void          set_buffer_blob(BufferBlob* b)   { _buffer_blob = b; };
  1842   void          set_buffer_blob(BufferBlob* b)   { _buffer_blob = b; };
  1846 
  1843 
  1847   // Get/set the thread's logging information
  1844   // Get/set the thread's logging information
  1848   CompileLog*   log()                            { return _log; }
  1845   CompileLog*   log()                            { return _log; }
  1849   void          init_log(CompileLog* log) {
  1846   void          init_log(CompileLog* log) {