Mercurial > hg > truffle
comparison src/share/vm/runtime/vmThread.cpp @ 14518:d8041d695d19
Merged with jdk9/dev/hotspot changeset 3812c088b945
author | twisti |
---|---|
date | Tue, 11 Mar 2014 18:45:59 -0700 |
parents | f460c6926af7 |
children | 4ca6dc0799b6 |
comparison
equal
deleted
inserted
replaced
14141:f97c5ec83832 | 14518:d8041d695d19 |
---|---|
38 #include "trace/tracing.hpp" | 38 #include "trace/tracing.hpp" |
39 #include "utilities/dtrace.hpp" | 39 #include "utilities/dtrace.hpp" |
40 #include "utilities/events.hpp" | 40 #include "utilities/events.hpp" |
41 #include "utilities/xmlstream.hpp" | 41 #include "utilities/xmlstream.hpp" |
42 | 42 |
43 #ifndef USDT2 | |
44 HS_DTRACE_PROBE_DECL3(hotspot, vmops__request, char *, uintptr_t, int); | |
45 HS_DTRACE_PROBE_DECL3(hotspot, vmops__begin, char *, uintptr_t, int); | |
46 HS_DTRACE_PROBE_DECL3(hotspot, vmops__end, char *, uintptr_t, int); | |
47 #endif /* !USDT2 */ | |
48 | |
49 // Dummy VM operation to act as first element in our circular double-linked list | 43 // Dummy VM operation to act as first element in our circular double-linked list |
50 class VM_Dummy: public VM_Operation { | 44 class VM_Dummy: public VM_Operation { |
51 VMOp_Type type() const { return VMOp_Dummy; } | 45 VMOp_Type type() const { return VMOp_Dummy; } |
52 void doit() {}; | 46 void doit() {}; |
53 }; | 47 }; |
152 | 146 |
153 //----------------------------------------------------------------- | 147 //----------------------------------------------------------------- |
154 // High-level interface | 148 // High-level interface |
155 bool VMOperationQueue::add(VM_Operation *op) { | 149 bool VMOperationQueue::add(VM_Operation *op) { |
156 | 150 |
157 #ifndef USDT2 | |
158 HS_DTRACE_PROBE3(hotspot, vmops__request, op->name(), strlen(op->name()), | |
159 op->evaluation_mode()); | |
160 #else /* USDT2 */ | |
161 HOTSPOT_VMOPS_REQUEST( | 151 HOTSPOT_VMOPS_REQUEST( |
162 (char *) op->name(), strlen(op->name()), | 152 (char *) op->name(), strlen(op->name()), |
163 op->evaluation_mode()); | 153 op->evaluation_mode()); |
164 #endif /* USDT2 */ | |
165 | 154 |
166 // Encapsulates VM queue policy. Currently, that | 155 // Encapsulates VM queue policy. Currently, that |
167 // only involves putting them on the right list | 156 // only involves putting them on the right list |
168 if (op->evaluate_at_safepoint()) { | 157 if (op->evaluate_at_safepoint()) { |
169 queue_add_back(SafepointPriority, op); | 158 queue_add_back(SafepointPriority, op); |
356 void VMThread::evaluate_operation(VM_Operation* op) { | 345 void VMThread::evaluate_operation(VM_Operation* op) { |
357 ResourceMark rm; | 346 ResourceMark rm; |
358 | 347 |
359 { | 348 { |
360 PerfTraceTime vm_op_timer(perf_accumulated_vm_operation_time()); | 349 PerfTraceTime vm_op_timer(perf_accumulated_vm_operation_time()); |
361 #ifndef USDT2 | |
362 HS_DTRACE_PROBE3(hotspot, vmops__begin, op->name(), strlen(op->name()), | |
363 op->evaluation_mode()); | |
364 #else /* USDT2 */ | |
365 HOTSPOT_VMOPS_BEGIN( | 350 HOTSPOT_VMOPS_BEGIN( |
366 (char *) op->name(), strlen(op->name()), | 351 (char *) op->name(), strlen(op->name()), |
367 op->evaluation_mode()); | 352 op->evaluation_mode()); |
368 #endif /* USDT2 */ | |
369 | 353 |
370 EventExecuteVMOperation event; | 354 EventExecuteVMOperation event; |
371 | 355 |
372 op->evaluate(); | 356 op->evaluate(); |
373 | 357 |
381 // This is because the caller thread could have exited already. | 365 // This is because the caller thread could have exited already. |
382 event.set_caller(is_concurrent ? 0 : op->calling_thread()->osthread()->thread_id()); | 366 event.set_caller(is_concurrent ? 0 : op->calling_thread()->osthread()->thread_id()); |
383 event.commit(); | 367 event.commit(); |
384 } | 368 } |
385 | 369 |
386 #ifndef USDT2 | |
387 HS_DTRACE_PROBE3(hotspot, vmops__end, op->name(), strlen(op->name()), | |
388 op->evaluation_mode()); | |
389 #else /* USDT2 */ | |
390 HOTSPOT_VMOPS_END( | 370 HOTSPOT_VMOPS_END( |
391 (char *) op->name(), strlen(op->name()), | 371 (char *) op->name(), strlen(op->name()), |
392 op->evaluation_mode()); | 372 op->evaluation_mode()); |
393 #endif /* USDT2 */ | |
394 } | 373 } |
395 | 374 |
396 // Last access of info in _cur_vm_operation! | 375 // Last access of info in _cur_vm_operation! |
397 bool c_heap_allocated = op->is_cheap_allocated(); | 376 bool c_heap_allocated = op->is_cheap_allocated(); |
398 | 377 |
675 _cur_vm_operation = prev_vm_operation; | 654 _cur_vm_operation = prev_vm_operation; |
676 } | 655 } |
677 } | 656 } |
678 | 657 |
679 | 658 |
680 void VMThread::oops_do(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf) { | 659 void VMThread::oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf) { |
681 Thread::oops_do(f, cld_f, cf); | 660 Thread::oops_do(f, cld_f, cf); |
682 _vm_queue->oops_do(f); | 661 _vm_queue->oops_do(f); |
683 } | 662 } |
684 | 663 |
685 //------------------------------------------------------------------------------------------------------------------ | 664 //------------------------------------------------------------------------------------------------------------------ |