35 // The following classes are used for operations
36 // initiated by a Java thread but that must
37 // take place in the VMThread.
38
39 #define VM_OP_ENUM(type) VMOp_##type,
40
41 // Note: When new VM_XXX comes up, add 'XXX' to the template table.
42 #define VM_OPS_DO(template) \
43 template(Dummy) \
44 template(ThreadStop) \
45 template(ThreadDump) \
46 template(PrintThreads) \
47 template(FindDeadlocks) \
48 template(ClearICs) \
49 template(ForceSafepoint) \
50 template(ForceAsyncSafepoint) \
51 template(Deoptimize) \
52 template(DeoptimizeFrame) \
53 template(DeoptimizeAll) \
54 template(ZombieAll) \
55 template(UnlinkSymbols) \
56 template(Verify) \
57 template(PrintJNI) \
58 template(HeapDumper) \
59 template(DeoptimizeTheWorld) \
60 template(CollectForMetadataAllocation) \
61 template(GC_HeapInspection) \
62 template(GenCollectFull) \
63 template(GenCollectFullConcurrent) \
64 template(GenCollectForAllocation) \
65 template(ParallelGCFailedAllocation) \
66 template(ParallelGCSystemGC) \
67 template(CGC_Operation) \
68 template(CMS_Initial_Mark) \
69 template(CMS_Final_Remark) \
70 template(G1CollectForAllocation) \
71 template(G1CollectFull) \
72 template(ZOperation) \
73 template(HandshakeOneThread) \
74 template(HandshakeAllThreads) \
75 template(HandshakeFallback) \
335 #ifndef PRODUCT
336 class VM_DeoptimizeAll: public VM_Operation {
337 private:
338 Klass* _dependee;
339 public:
340 VM_DeoptimizeAll() {}
341 VMOp_Type type() const { return VMOp_DeoptimizeAll; }
342 void doit();
343 bool allow_nested_vm_operations() const { return true; }
344 };
345
346
347 class VM_ZombieAll: public VM_Operation {
348 public:
349 VM_ZombieAll() {}
350 VMOp_Type type() const { return VMOp_ZombieAll; }
351 void doit();
352 bool allow_nested_vm_operations() const { return true; }
353 };
354 #endif // PRODUCT
355
356 class VM_UnlinkSymbols: public VM_Operation {
357 public:
358 VM_UnlinkSymbols() {}
359 VMOp_Type type() const { return VMOp_UnlinkSymbols; }
360 void doit();
361 bool allow_nested_vm_operations() const { return true; }
362 };
363
364 class VM_Verify: public VM_Operation {
365 public:
366 VMOp_Type type() const { return VMOp_Verify; }
367 void doit();
368 };
369
370
371 class VM_PrintThreads: public VM_Operation {
372 private:
373 outputStream* _out;
374 bool _print_concurrent_locks;
375 bool _print_extended_info;
376 public:
377 VM_PrintThreads()
378 : _out(tty), _print_concurrent_locks(PrintConcurrentLocks), _print_extended_info(false)
379 {}
380 VM_PrintThreads(outputStream* out, bool print_concurrent_locks, bool print_extended_info)
381 : _out(out), _print_concurrent_locks(print_concurrent_locks), _print_extended_info(print_extended_info)
382 {}
|
35 // The following classes are used for operations
36 // initiated by a Java thread but that must
37 // take place in the VMThread.
38
39 #define VM_OP_ENUM(type) VMOp_##type,
40
41 // Note: When new VM_XXX comes up, add 'XXX' to the template table.
42 #define VM_OPS_DO(template) \
43 template(Dummy) \
44 template(ThreadStop) \
45 template(ThreadDump) \
46 template(PrintThreads) \
47 template(FindDeadlocks) \
48 template(ClearICs) \
49 template(ForceSafepoint) \
50 template(ForceAsyncSafepoint) \
51 template(Deoptimize) \
52 template(DeoptimizeFrame) \
53 template(DeoptimizeAll) \
54 template(ZombieAll) \
55 template(Verify) \
56 template(PrintJNI) \
57 template(HeapDumper) \
58 template(DeoptimizeTheWorld) \
59 template(CollectForMetadataAllocation) \
60 template(GC_HeapInspection) \
61 template(GenCollectFull) \
62 template(GenCollectFullConcurrent) \
63 template(GenCollectForAllocation) \
64 template(ParallelGCFailedAllocation) \
65 template(ParallelGCSystemGC) \
66 template(CGC_Operation) \
67 template(CMS_Initial_Mark) \
68 template(CMS_Final_Remark) \
69 template(G1CollectForAllocation) \
70 template(G1CollectFull) \
71 template(ZOperation) \
72 template(HandshakeOneThread) \
73 template(HandshakeAllThreads) \
74 template(HandshakeFallback) \
334 #ifndef PRODUCT
335 class VM_DeoptimizeAll: public VM_Operation {
336 private:
337 Klass* _dependee;
338 public:
339 VM_DeoptimizeAll() {}
340 VMOp_Type type() const { return VMOp_DeoptimizeAll; }
341 void doit();
342 bool allow_nested_vm_operations() const { return true; }
343 };
344
345
346 class VM_ZombieAll: public VM_Operation {
347 public:
348 VM_ZombieAll() {}
349 VMOp_Type type() const { return VMOp_ZombieAll; }
350 void doit();
351 bool allow_nested_vm_operations() const { return true; }
352 };
353 #endif // PRODUCT
354
355 class VM_Verify: public VM_Operation {
356 public:
357 VMOp_Type type() const { return VMOp_Verify; }
358 void doit();
359 };
360
361
362 class VM_PrintThreads: public VM_Operation {
363 private:
364 outputStream* _out;
365 bool _print_concurrent_locks;
366 bool _print_extended_info;
367 public:
368 VM_PrintThreads()
369 : _out(tty), _print_concurrent_locks(PrintConcurrentLocks), _print_extended_info(false)
370 {}
371 VM_PrintThreads(outputStream* out, bool print_concurrent_locks, bool print_extended_info)
372 : _out(out), _print_concurrent_locks(print_concurrent_locks), _print_extended_info(print_extended_info)
373 {}
|