23 */ |
23 */ |
24 |
24 |
25 #ifndef SHARE_VM_UTILITIES_DTRACE_HPP |
25 #ifndef SHARE_VM_UTILITIES_DTRACE_HPP |
26 #define SHARE_VM_UTILITIES_DTRACE_HPP |
26 #define SHARE_VM_UTILITIES_DTRACE_HPP |
27 |
27 |
28 #if defined(SOLARIS) && defined(DTRACE_ENABLED) |
28 #if defined(DTRACE_ENABLED) |
29 |
29 |
30 #include <sys/sdt.h> |
30 #include <sys/sdt.h> |
31 |
31 |
32 #define DTRACE_ONLY(x) x |
32 #define DTRACE_ONLY(x) x |
33 #define NOT_DTRACE(x) |
33 #define NOT_DTRACE(x) |
34 |
34 |
35 // Work around dtrace tail call bug 6672627 until it is fixed in solaris 10. |
35 // Work around dtrace tail call bug 6672627 until it is fixed in solaris 10. |
36 #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \ |
36 #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \ |
37 do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0) |
37 do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0) |
38 |
38 |
39 #else // ndef SOLARIS || ndef DTRACE_ENABLED |
39 #if defined(SOLARIS) |
|
40 #define USDT1 1 |
|
41 #elif defined(__APPLE__) |
|
42 #define USDT2 1 |
|
43 #include <sys/types.h> |
|
44 #include "dtracefiles/hotspot.h" |
|
45 #include "dtracefiles/hotspot_jni.h" |
|
46 #include "dtracefiles/hs_private.h" |
|
47 #else |
|
48 #error "dtrace enabled for unknown os" |
|
49 #endif /* defined(SOLARIS) */ |
|
50 |
|
51 #else /* defined(DTRACE_ENABLED) */ |
40 |
52 |
41 #define DTRACE_ONLY(x) |
53 #define DTRACE_ONLY(x) |
42 #define NOT_DTRACE(x) x |
54 #define NOT_DTRACE(x) x |
|
55 |
|
56 #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() |
|
57 |
|
58 #ifndef USDT2 |
43 |
59 |
44 #define DTRACE_PROBE(a,b) {;} |
60 #define DTRACE_PROBE(a,b) {;} |
45 #define DTRACE_PROBE1(a,b,c) {;} |
61 #define DTRACE_PROBE1(a,b,c) {;} |
46 #define DTRACE_PROBE2(a,b,c,d) {;} |
62 #define DTRACE_PROBE2(a,b,c,d) {;} |
47 #define DTRACE_PROBE3(a,b,c,d,e) {;} |
63 #define DTRACE_PROBE3(a,b,c,d,e) {;} |
48 #define DTRACE_PROBE4(a,b,c,d,e,f) {;} |
64 #define DTRACE_PROBE4(a,b,c,d,e,f) {;} |
49 #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;} |
65 #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;} |
50 |
66 |
51 #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() |
67 #else /* USDT2 */ |
52 |
68 |
53 #endif |
69 #include "dtrace_usdt2_disabled.hpp" |
|
70 #endif /* USDT2 */ |
|
71 |
|
72 #endif /* defined(DTRACE_ENABLED) */ |
|
73 |
|
74 #ifndef USDT2 |
54 |
75 |
55 #define HS_DTRACE_PROBE_FN(provider,name)\ |
76 #define HS_DTRACE_PROBE_FN(provider,name)\ |
56 __dtrace_##provider##___##name |
77 __dtrace_##provider##___##name |
57 |
78 |
58 #define HS_DTRACE_PROBE_DECL_N(provider,name,args) \ |
79 #define HS_DTRACE_PROBE_DECL_N(provider,name,args) \ |
131 #define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)\ |
152 #define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)\ |
132 HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\ |
153 HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\ |
133 (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\ |
154 (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\ |
134 (uintptr_t)a8,(uintptr_t)a9)) |
155 (uintptr_t)a8,(uintptr_t)a9)) |
135 |
156 |
|
157 #endif /* !USDT2 */ |
|
158 |
136 #endif // SHARE_VM_UTILITIES_DTRACE_HPP |
159 #endif // SHARE_VM_UTILITIES_DTRACE_HPP |