comparison src/share/vm/utilities/dtrace.hpp @ 6948:e522a00b91aa

Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/ after NPG - C++ build works
author Doug Simon <doug.simon@oracle.com>
date Mon, 12 Nov 2012 23:14:12 +0100
parents 75982791ddb6
children a3ba776d6ab6
comparison
equal deleted inserted replaced
6711:ae13cc658b80 6948:e522a00b91aa
1 /* 1 /*
2 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
3 * Copyright (c) 2009, 2012 Red Hat, Inc.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 5 *
5 * This code is free software; you can redistribute it and/or modify it 6 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 7 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 8 * published by the Free Software Foundation.
30 #include <sys/sdt.h> 31 #include <sys/sdt.h>
31 32
32 #define DTRACE_ONLY(x) x 33 #define DTRACE_ONLY(x) x
33 #define NOT_DTRACE(x) 34 #define NOT_DTRACE(x)
34 35
36 #if defined(SOLARIS)
35 // Work around dtrace tail call bug 6672627 until it is fixed in solaris 10. 37 // Work around dtrace tail call bug 6672627 until it is fixed in solaris 10.
36 #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \ 38 #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \
37 do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0) 39 do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0)
38 40
39 #if defined(SOLARIS) 41 #define USDT1 1
42 #elif defined(LINUX)
43 #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG()
40 #define USDT1 1 44 #define USDT1 1
41 #elif defined(__APPLE__) 45 #elif defined(__APPLE__)
46 #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG()
42 #define USDT2 1 47 #define USDT2 1
43 #include <sys/types.h> 48 #include <sys/types.h>
44 #include "dtracefiles/hotspot.h" 49 #include "dtracefiles/hotspot.h"
45 #include "dtracefiles/hotspot_jni.h" 50 #include "dtracefiles/hotspot_jni.h"
46 #include "dtracefiles/hs_private.h" 51 #include "dtracefiles/hs_private.h"
61 #define DTRACE_PROBE1(a,b,c) {;} 66 #define DTRACE_PROBE1(a,b,c) {;}
62 #define DTRACE_PROBE2(a,b,c,d) {;} 67 #define DTRACE_PROBE2(a,b,c,d) {;}
63 #define DTRACE_PROBE3(a,b,c,d,e) {;} 68 #define DTRACE_PROBE3(a,b,c,d,e) {;}
64 #define DTRACE_PROBE4(a,b,c,d,e,f) {;} 69 #define DTRACE_PROBE4(a,b,c,d,e,f) {;}
65 #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;} 70 #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;}
71 #define DTRACE_PROBE6(a,b,c,d,e,f,g,h) {;}
72 #define DTRACE_PROBE7(a,b,c,d,e,f,g,h,i) {;}
73 #define DTRACE_PROBE8(a,b,c,d,e,f,g,h,i,j) {;}
74 #define DTRACE_PROBE9(a,b,c,d,e,f,g,h,i,j,k) {;}
75 #define DTRACE_PROBE10(a,b,c,d,e,f,g,h,i,j,k,l) {;}
66 76
67 #else /* USDT2 */ 77 #else /* USDT2 */
68 78
69 #include "dtrace_usdt2_disabled.hpp" 79 #include "dtrace_usdt2_disabled.hpp"
70 #endif /* USDT2 */ 80 #endif /* USDT2 */
74 #ifndef USDT2 84 #ifndef USDT2
75 85
76 #define HS_DTRACE_PROBE_FN(provider,name)\ 86 #define HS_DTRACE_PROBE_FN(provider,name)\
77 __dtrace_##provider##___##name 87 __dtrace_##provider##___##name
78 88
89 #ifdef SOLARIS
90 // Solaris dtrace needs actual extern function decls.
79 #define HS_DTRACE_PROBE_DECL_N(provider,name,args) \ 91 #define HS_DTRACE_PROBE_DECL_N(provider,name,args) \
80 DTRACE_ONLY(extern "C" void HS_DTRACE_PROBE_FN(provider,name) args) 92 DTRACE_ONLY(extern "C" void HS_DTRACE_PROBE_FN(provider,name) args)
81 #define HS_DTRACE_PROBE_CDECL_N(provider,name,args) \ 93 #define HS_DTRACE_PROBE_CDECL_N(provider,name,args) \
82 DTRACE_ONLY(extern void HS_DTRACE_PROBE_FN(provider,name) args) 94 DTRACE_ONLY(extern void HS_DTRACE_PROBE_FN(provider,name) args)
95 #else
96 // Systemtap dtrace compatible probes on GNU/Linux don't.
97 // If dtrace is disabled this macro becomes NULL
98 #define HS_DTRACE_PROBE_DECL_N(provider,name,args)
99 #define HS_DTRACE_PROBE_CDECL_N(provider,name,args)
100 #endif
83 101
84 /* Dtrace probe declarations */ 102 /* Dtrace probe declarations */
85 #define HS_DTRACE_PROBE_DECL(provider,name) \ 103 #define HS_DTRACE_PROBE_DECL(provider,name) \
86 HS_DTRACE_PROBE_DECL0(provider,name) 104 HS_DTRACE_PROBE_DECL0(provider,name)
87 #define HS_DTRACE_PROBE_DECL0(provider,name)\ 105 #define HS_DTRACE_PROBE_DECL0(provider,name)\
116 HS_DTRACE_PROBE_DECL_N(provider,name,(\ 134 HS_DTRACE_PROBE_DECL_N(provider,name,(\
117 uintptr_t,uintptr_t,uintptr_t,uintptr_t,uintptr_t,uintptr_t,uintptr_t,\ 135 uintptr_t,uintptr_t,uintptr_t,uintptr_t,uintptr_t,uintptr_t,uintptr_t,\
118 uintptr_t,uintptr_t,uintptr_t)) 136 uintptr_t,uintptr_t,uintptr_t))
119 137
120 /* Dtrace probe definitions */ 138 /* Dtrace probe definitions */
139 #if defined(SOLARIS)
140 // Solaris dtrace uses actual function calls.
121 #define HS_DTRACE_PROBE_N(provider,name, args) \ 141 #define HS_DTRACE_PROBE_N(provider,name, args) \
122 DTRACE_ONLY(HS_DTRACE_PROBE_FN(provider,name) args) 142 DTRACE_ONLY(HS_DTRACE_PROBE_FN(provider,name) args)
123 143
124 #define HS_DTRACE_PROBE(provider,name) HS_DTRACE_PROBE0(provider,name) 144 #define HS_DTRACE_PROBE(provider,name) HS_DTRACE_PROBE0(provider,name)
125 #define HS_DTRACE_PROBE0(provider,name)\ 145 #define HS_DTRACE_PROBE0(provider,name)\
151 (uintptr_t)a8)) 171 (uintptr_t)a8))
152 #define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)\ 172 #define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)\
153 HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\ 173 HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\
154 (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\ 174 (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\
155 (uintptr_t)a8,(uintptr_t)a9)) 175 (uintptr_t)a8,(uintptr_t)a9))
176 #else
177 // Systemtap dtrace compatible probes on GNU/Linux use direct macros.
178 // If dtrace is disabled this macro becomes NULL
179 #define HS_DTRACE_PROBE(provider,name) HS_DTRACE_PROBE0(provider,name)
180 #define HS_DTRACE_PROBE0(provider,name)\
181 DTRACE_PROBE(provider,name)
182 #define HS_DTRACE_PROBE1(provider,name,a0)\
183 DTRACE_PROBE1(provider,name,a0)
184 #define HS_DTRACE_PROBE2(provider,name,a0,a1)\
185 DTRACE_PROBE2(provider,name,a0,a1)
186 #define HS_DTRACE_PROBE3(provider,name,a0,a1,a2)\
187 DTRACE_PROBE3(provider,name,a0,a1,a2)
188 #define HS_DTRACE_PROBE4(provider,name,a0,a1,a2,a3)\
189 DTRACE_PROBE4(provider,name,a0,a1,a2,a3)
190 #define HS_DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)\
191 DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)
192 #define HS_DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)\
193 DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)
194 #define HS_DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)\
195 DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)
196 #define HS_DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)\
197 DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)
198 #define HS_DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
199 DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
200 #define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)\
201 DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)
202 #endif
156 203
157 #endif /* !USDT2 */ 204 #endif /* !USDT2 */
158 205
159 #endif // SHARE_VM_UTILITIES_DTRACE_HPP 206 #endif // SHARE_VM_UTILITIES_DTRACE_HPP