25 #include "precompiled.hpp"
26 #include "classfile/systemDictionary.hpp"
27 #include "classfile/vmSymbols.hpp"
28 #include "compiler/compileBroker.hpp"
29 #include "oops/oop.inline.hpp"
30 #include "runtime/init.hpp"
31 #include "runtime/java.hpp"
32 #include "runtime/javaCalls.hpp"
33 #include "runtime/threadCritical.hpp"
34 #include "utilities/events.hpp"
35 #include "utilities/exceptions.hpp"
36 #ifdef TARGET_OS_FAMILY_linux
37 # include "thread_linux.inline.hpp"
38 #endif
39 #ifdef TARGET_OS_FAMILY_solaris
40 # include "thread_solaris.inline.hpp"
41 #endif
42 #ifdef TARGET_OS_FAMILY_windows
43 # include "thread_windows.inline.hpp"
44 #endif
45
46
47 // Implementation of ThreadShadow
48 void check_ThreadShadow() {
49 const ByteSize offset1 = byte_offset_of(ThreadShadow, _pending_exception);
50 const ByteSize offset2 = Thread::pending_exception_offset();
51 if (offset1 != offset2) fatal("ThreadShadow::_pending_exception is not positioned correctly");
52 }
53
54
55 void ThreadShadow::set_pending_exception(oop exception, const char* file, int line) {
56 assert(exception != NULL && exception->is_oop(), "invalid exception oop");
57 _pending_exception = exception;
58 _exception_file = file;
59 _exception_line = line;
60 }
61
62 void ThreadShadow::clear_pending_exception() {
63 if (TraceClearedExceptions) {
64 if (_pending_exception != NULL) {
|
25 #include "precompiled.hpp"
26 #include "classfile/systemDictionary.hpp"
27 #include "classfile/vmSymbols.hpp"
28 #include "compiler/compileBroker.hpp"
29 #include "oops/oop.inline.hpp"
30 #include "runtime/init.hpp"
31 #include "runtime/java.hpp"
32 #include "runtime/javaCalls.hpp"
33 #include "runtime/threadCritical.hpp"
34 #include "utilities/events.hpp"
35 #include "utilities/exceptions.hpp"
36 #ifdef TARGET_OS_FAMILY_linux
37 # include "thread_linux.inline.hpp"
38 #endif
39 #ifdef TARGET_OS_FAMILY_solaris
40 # include "thread_solaris.inline.hpp"
41 #endif
42 #ifdef TARGET_OS_FAMILY_windows
43 # include "thread_windows.inline.hpp"
44 #endif
45 #ifdef TARGET_OS_FAMILY_bsd
46 # include "thread_bsd.inline.hpp"
47 #endif
48
49
50 // Implementation of ThreadShadow
51 void check_ThreadShadow() {
52 const ByteSize offset1 = byte_offset_of(ThreadShadow, _pending_exception);
53 const ByteSize offset2 = Thread::pending_exception_offset();
54 if (offset1 != offset2) fatal("ThreadShadow::_pending_exception is not positioned correctly");
55 }
56
57
58 void ThreadShadow::set_pending_exception(oop exception, const char* file, int line) {
59 assert(exception != NULL && exception->is_oop(), "invalid exception oop");
60 _pending_exception = exception;
61 _exception_file = file;
62 _exception_line = line;
63 }
64
65 void ThreadShadow::clear_pending_exception() {
66 if (TraceClearedExceptions) {
67 if (_pending_exception != NULL) {
|