48 #endif |
48 #endif |
49 #ifdef TARGET_OS_FAMILY_bsd |
49 #ifdef TARGET_OS_FAMILY_bsd |
50 # include "thread_bsd.inline.hpp" |
50 # include "thread_bsd.inline.hpp" |
51 #endif |
51 #endif |
52 |
52 |
|
53 #ifndef USDT2 |
53 HS_DTRACE_PROBE_DECL3(hotspot, vmops__request, char *, uintptr_t, int); |
54 HS_DTRACE_PROBE_DECL3(hotspot, vmops__request, char *, uintptr_t, int); |
54 HS_DTRACE_PROBE_DECL3(hotspot, vmops__begin, char *, uintptr_t, int); |
55 HS_DTRACE_PROBE_DECL3(hotspot, vmops__begin, char *, uintptr_t, int); |
55 HS_DTRACE_PROBE_DECL3(hotspot, vmops__end, char *, uintptr_t, int); |
56 HS_DTRACE_PROBE_DECL3(hotspot, vmops__end, char *, uintptr_t, int); |
|
57 #endif /* !USDT2 */ |
56 |
58 |
57 // Dummy VM operation to act as first element in our circular double-linked list |
59 // Dummy VM operation to act as first element in our circular double-linked list |
58 class VM_Dummy: public VM_Operation { |
60 class VM_Dummy: public VM_Operation { |
59 VMOp_Type type() const { return VMOp_Dummy; } |
61 VMOp_Type type() const { return VMOp_Dummy; } |
60 void doit() {}; |
62 void doit() {}; |
160 |
162 |
161 //----------------------------------------------------------------- |
163 //----------------------------------------------------------------- |
162 // High-level interface |
164 // High-level interface |
163 bool VMOperationQueue::add(VM_Operation *op) { |
165 bool VMOperationQueue::add(VM_Operation *op) { |
164 |
166 |
|
167 #ifndef USDT2 |
165 HS_DTRACE_PROBE3(hotspot, vmops__request, op->name(), strlen(op->name()), |
168 HS_DTRACE_PROBE3(hotspot, vmops__request, op->name(), strlen(op->name()), |
166 op->evaluation_mode()); |
169 op->evaluation_mode()); |
|
170 #else /* USDT2 */ |
|
171 HOTSPOT_VMOPS_REQUEST( |
|
172 (char *) op->name(), strlen(op->name()), |
|
173 op->evaluation_mode()); |
|
174 #endif /* USDT2 */ |
167 |
175 |
168 // Encapsulates VM queue policy. Currently, that |
176 // Encapsulates VM queue policy. Currently, that |
169 // only involves putting them on the right list |
177 // only involves putting them on the right list |
170 if (op->evaluate_at_safepoint()) { |
178 if (op->evaluate_at_safepoint()) { |
171 queue_add_back(SafepointPriority, op); |
179 queue_add_back(SafepointPriority, op); |
358 void VMThread::evaluate_operation(VM_Operation* op) { |
366 void VMThread::evaluate_operation(VM_Operation* op) { |
359 ResourceMark rm; |
367 ResourceMark rm; |
360 |
368 |
361 { |
369 { |
362 PerfTraceTime vm_op_timer(perf_accumulated_vm_operation_time()); |
370 PerfTraceTime vm_op_timer(perf_accumulated_vm_operation_time()); |
|
371 #ifndef USDT2 |
363 HS_DTRACE_PROBE3(hotspot, vmops__begin, op->name(), strlen(op->name()), |
372 HS_DTRACE_PROBE3(hotspot, vmops__begin, op->name(), strlen(op->name()), |
364 op->evaluation_mode()); |
373 op->evaluation_mode()); |
|
374 #else /* USDT2 */ |
|
375 HOTSPOT_VMOPS_BEGIN( |
|
376 (char *) op->name(), strlen(op->name()), |
|
377 op->evaluation_mode()); |
|
378 #endif /* USDT2 */ |
365 op->evaluate(); |
379 op->evaluate(); |
|
380 #ifndef USDT2 |
366 HS_DTRACE_PROBE3(hotspot, vmops__end, op->name(), strlen(op->name()), |
381 HS_DTRACE_PROBE3(hotspot, vmops__end, op->name(), strlen(op->name()), |
367 op->evaluation_mode()); |
382 op->evaluation_mode()); |
|
383 #else /* USDT2 */ |
|
384 HOTSPOT_VMOPS_END( |
|
385 (char *) op->name(), strlen(op->name()), |
|
386 op->evaluation_mode()); |
|
387 #endif /* USDT2 */ |
368 } |
388 } |
369 |
389 |
370 // Last access of info in _cur_vm_operation! |
390 // Last access of info in _cur_vm_operation! |
371 bool c_heap_allocated = op->is_cheap_allocated(); |
391 bool c_heap_allocated = op->is_cheap_allocated(); |
372 |
392 |