65 #include "runtime/sharedRuntime.hpp"
66 #include "runtime/signature.hpp"
67 #include "runtime/vm_operations.hpp"
68 #include "services/runtimeService.hpp"
69 #include "utilities/defaultStream.hpp"
70 #include "utilities/dtrace.hpp"
71 #include "utilities/events.hpp"
72 #include "utilities/histogram.hpp"
73 #ifdef TARGET_OS_FAMILY_linux
74 # include "os_linux.inline.hpp"
75 # include "thread_linux.inline.hpp"
76 #endif
77 #ifdef TARGET_OS_FAMILY_solaris
78 # include "os_solaris.inline.hpp"
79 # include "thread_solaris.inline.hpp"
80 #endif
81 #ifdef TARGET_OS_FAMILY_windows
82 # include "os_windows.inline.hpp"
83 # include "thread_windows.inline.hpp"
84 #endif
85
86 static jint CurrentVersion = JNI_VERSION_1_6;
87
88
89 // The DT_RETURN_MARK macros create a scoped object to fire the dtrace
90 // '-return' probe regardless of the return path is taken out of the function.
91 // Methods that have multiple return paths use this to avoid having to
92 // instrument each return path. Methods that use CHECK or THROW must use this
93 // since those macros can cause an immedate uninstrumented return.
94 //
95 // In order to get the return value, a reference to the variable containing
96 // the return value must be passed to the contructor of the object, and
97 // the return value must be set before return (since the mark object has
98 // a reference to it).
99 //
100 // Example:
101 // DT_RETURN_MARK_DECL(SomeFunc, int);
102 // JNI_ENTRY(int, SomeFunc, ...)
103 // int return_value = 0;
104 // DT_RETURN_MARK(SomeFunc, int, (const int&)return_value);
|
65 #include "runtime/sharedRuntime.hpp"
66 #include "runtime/signature.hpp"
67 #include "runtime/vm_operations.hpp"
68 #include "services/runtimeService.hpp"
69 #include "utilities/defaultStream.hpp"
70 #include "utilities/dtrace.hpp"
71 #include "utilities/events.hpp"
72 #include "utilities/histogram.hpp"
73 #ifdef TARGET_OS_FAMILY_linux
74 # include "os_linux.inline.hpp"
75 # include "thread_linux.inline.hpp"
76 #endif
77 #ifdef TARGET_OS_FAMILY_solaris
78 # include "os_solaris.inline.hpp"
79 # include "thread_solaris.inline.hpp"
80 #endif
81 #ifdef TARGET_OS_FAMILY_windows
82 # include "os_windows.inline.hpp"
83 # include "thread_windows.inline.hpp"
84 #endif
85 #ifdef TARGET_OS_FAMILY_bsd
86 # include "os_bsd.inline.hpp"
87 # include "thread_bsd.inline.hpp"
88 #endif
89
90 static jint CurrentVersion = JNI_VERSION_1_6;
91
92
93 // The DT_RETURN_MARK macros create a scoped object to fire the dtrace
94 // '-return' probe regardless of the return path is taken out of the function.
95 // Methods that have multiple return paths use this to avoid having to
96 // instrument each return path. Methods that use CHECK or THROW must use this
97 // since those macros can cause an immedate uninstrumented return.
98 //
99 // In order to get the return value, a reference to the variable containing
100 // the return value must be passed to the contructor of the object, and
101 // the return value must be set before return (since the mark object has
102 // a reference to it).
103 //
104 // Example:
105 // DT_RETURN_MARK_DECL(SomeFunc, int);
106 // JNI_ENTRY(int, SomeFunc, ...)
107 // int return_value = 0;
108 // DT_RETURN_MARK(SomeFunc, int, (const int&)return_value);
|