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) { |