29 #include "oops/methodOop.hpp"
30 #include "oops/oop.inline.hpp"
31 #include "runtime/interfaceSupport.hpp"
32 #include "runtime/mutexLocker.hpp"
33 #include "runtime/os.hpp"
34 #include "runtime/vmThread.hpp"
35 #include "runtime/vm_operations.hpp"
36 #include "services/runtimeService.hpp"
37 #include "utilities/dtrace.hpp"
38 #include "utilities/events.hpp"
39 #include "utilities/xmlstream.hpp"
40 #ifdef TARGET_OS_FAMILY_linux
41 # include "thread_linux.inline.hpp"
42 #endif
43 #ifdef TARGET_OS_FAMILY_solaris
44 # include "thread_solaris.inline.hpp"
45 #endif
46 #ifdef TARGET_OS_FAMILY_windows
47 # include "thread_windows.inline.hpp"
48 #endif
49
50 HS_DTRACE_PROBE_DECL3(hotspot, vmops__request, char *, uintptr_t, int);
51 HS_DTRACE_PROBE_DECL3(hotspot, vmops__begin, char *, uintptr_t, int);
52 HS_DTRACE_PROBE_DECL3(hotspot, vmops__end, char *, uintptr_t, int);
53
54 // Dummy VM operation to act as first element in our circular double-linked list
55 class VM_Dummy: public VM_Operation {
56 VMOp_Type type() const { return VMOp_Dummy; }
57 void doit() {};
58 };
59
60 VMOperationQueue::VMOperationQueue() {
61 // The queue is a circular doubled-linked list, which always contains
62 // one element (i.e., one element means empty).
63 for(int i = 0; i < nof_priorities; i++) {
64 _queue_length[i] = 0;
65 _queue_counter = 0;
66 _queue[i] = new VM_Dummy();
67 _queue[i]->set_next(_queue[i]);
68 _queue[i]->set_prev(_queue[i]);
|
29 #include "oops/methodOop.hpp"
30 #include "oops/oop.inline.hpp"
31 #include "runtime/interfaceSupport.hpp"
32 #include "runtime/mutexLocker.hpp"
33 #include "runtime/os.hpp"
34 #include "runtime/vmThread.hpp"
35 #include "runtime/vm_operations.hpp"
36 #include "services/runtimeService.hpp"
37 #include "utilities/dtrace.hpp"
38 #include "utilities/events.hpp"
39 #include "utilities/xmlstream.hpp"
40 #ifdef TARGET_OS_FAMILY_linux
41 # include "thread_linux.inline.hpp"
42 #endif
43 #ifdef TARGET_OS_FAMILY_solaris
44 # include "thread_solaris.inline.hpp"
45 #endif
46 #ifdef TARGET_OS_FAMILY_windows
47 # include "thread_windows.inline.hpp"
48 #endif
49 #ifdef TARGET_OS_FAMILY_bsd
50 # include "thread_bsd.inline.hpp"
51 #endif
52
53 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__end, char *, uintptr_t, int);
56
57 // Dummy VM operation to act as first element in our circular double-linked list
58 class VM_Dummy: public VM_Operation {
59 VMOp_Type type() const { return VMOp_Dummy; }
60 void doit() {};
61 };
62
63 VMOperationQueue::VMOperationQueue() {
64 // The queue is a circular doubled-linked list, which always contains
65 // one element (i.e., one element means empty).
66 for(int i = 0; i < nof_priorities; i++) {
67 _queue_length[i] = 0;
68 _queue_counter = 0;
69 _queue[i] = new VM_Dummy();
70 _queue[i]->set_next(_queue[i]);
71 _queue[i]->set_prev(_queue[i]);
|