src/share/vm/runtime/vm_operations.hpp

Print this page




  34 // The following classes are used for operations
  35 // initiated by a Java thread but that must
  36 // take place in the VMThread.
  37 
  38 #define VM_OP_ENUM(type)   VMOp_##type,
  39 
  40 // Note: When new VM_XXX comes up, add 'XXX' to the template table.
  41 #define VM_OPS_DO(template)                       \
  42   template(Dummy)                                 \
  43   template(ThreadStop)                            \
  44   template(ThreadDump)                            \
  45   template(PrintThreads)                          \
  46   template(FindDeadlocks)                         \
  47   template(ForceSafepoint)                        \
  48   template(ForceAsyncSafepoint)                   \
  49   template(Deoptimize)                            \
  50   template(DeoptimizeFrame)                       \
  51   template(DeoptimizeAll)                         \
  52   template(ZombieAll)                             \
  53   template(UnlinkSymbols)                         \
  54   template(HandleFullCodeCache)                   \
  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(G1CollectFull)                         \
  70   template(G1CollectForAllocation)                \
  71   template(G1IncCollectionPause)                  \
  72   template(EnableBiasedLocking)                   \
  73   template(RevokeBias)                            \
  74   template(BulkRevokeBias)                        \


 242   VMOp_Type type() const                        { return VMOp_Deoptimize; }
 243   void doit();
 244   bool allow_nested_vm_operations() const        { return true; }
 245 };
 246 
 247 
 248 // Deopt helper that can deoptimize frames in threads other than the
 249 // current thread.  Only used through Deoptimization::deoptimize_frame.
 250 class VM_DeoptimizeFrame: public VM_Operation {
 251   friend class Deoptimization;
 252 
 253  private:
 254   JavaThread* _thread;
 255   intptr_t*   _id;
 256   VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id);
 257 
 258  public:
 259   VMOp_Type type() const                         { return VMOp_DeoptimizeFrame; }
 260   void doit();
 261   bool allow_nested_vm_operations() const        { return true;  }
 262 };
 263 
 264 class VM_HandleFullCodeCache: public VM_Operation {
 265  private:
 266   bool  _is_full;
 267  public:
 268   VM_HandleFullCodeCache(bool is_full)           { _is_full = is_full; }
 269   VMOp_Type type() const                         { return VMOp_HandleFullCodeCache; }
 270   void doit();
 271   bool allow_nested_vm_operations() const        { return true; }
 272 };
 273 
 274 #ifndef PRODUCT
 275 class VM_DeoptimizeAll: public VM_Operation {
 276  private:
 277   KlassHandle _dependee;
 278  public:
 279   VM_DeoptimizeAll() {}
 280   VMOp_Type type() const                         { return VMOp_DeoptimizeAll; }
 281   void doit();
 282   bool allow_nested_vm_operations() const        { return true; }
 283 };
 284 
 285 
 286 class VM_ZombieAll: public VM_Operation {
 287  public:
 288   VM_ZombieAll() {}
 289   VMOp_Type type() const                         { return VMOp_ZombieAll; }
 290   void doit();
 291   bool allow_nested_vm_operations() const        { return true; }




  34 // The following classes are used for operations
  35 // initiated by a Java thread but that must
  36 // take place in the VMThread.
  37 
  38 #define VM_OP_ENUM(type)   VMOp_##type,
  39 
  40 // Note: When new VM_XXX comes up, add 'XXX' to the template table.
  41 #define VM_OPS_DO(template)                       \
  42   template(Dummy)                                 \
  43   template(ThreadStop)                            \
  44   template(ThreadDump)                            \
  45   template(PrintThreads)                          \
  46   template(FindDeadlocks)                         \
  47   template(ForceSafepoint)                        \
  48   template(ForceAsyncSafepoint)                   \
  49   template(Deoptimize)                            \
  50   template(DeoptimizeFrame)                       \
  51   template(DeoptimizeAll)                         \
  52   template(ZombieAll)                             \
  53   template(UnlinkSymbols)                         \

  54   template(Verify)                                \
  55   template(PrintJNI)                              \
  56   template(HeapDumper)                            \
  57   template(DeoptimizeTheWorld)                    \
  58   template(CollectForMetadataAllocation)          \
  59   template(GC_HeapInspection)                     \
  60   template(GenCollectFull)                        \
  61   template(GenCollectFullConcurrent)              \
  62   template(GenCollectForAllocation)               \
  63   template(ParallelGCFailedAllocation)            \
  64   template(ParallelGCSystemGC)                    \
  65   template(CGC_Operation)                         \
  66   template(CMS_Initial_Mark)                      \
  67   template(CMS_Final_Remark)                      \
  68   template(G1CollectFull)                         \
  69   template(G1CollectForAllocation)                \
  70   template(G1IncCollectionPause)                  \
  71   template(EnableBiasedLocking)                   \
  72   template(RevokeBias)                            \
  73   template(BulkRevokeBias)                        \


 241   VMOp_Type type() const                        { return VMOp_Deoptimize; }
 242   void doit();
 243   bool allow_nested_vm_operations() const        { return true; }
 244 };
 245 
 246 
 247 // Deopt helper that can deoptimize frames in threads other than the
 248 // current thread.  Only used through Deoptimization::deoptimize_frame.
 249 class VM_DeoptimizeFrame: public VM_Operation {
 250   friend class Deoptimization;
 251 
 252  private:
 253   JavaThread* _thread;
 254   intptr_t*   _id;
 255   VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id);
 256 
 257  public:
 258   VMOp_Type type() const                         { return VMOp_DeoptimizeFrame; }
 259   void doit();
 260   bool allow_nested_vm_operations() const        { return true;  }










 261 };
 262 
 263 #ifndef PRODUCT
 264 class VM_DeoptimizeAll: public VM_Operation {
 265  private:
 266   KlassHandle _dependee;
 267  public:
 268   VM_DeoptimizeAll() {}
 269   VMOp_Type type() const                         { return VMOp_DeoptimizeAll; }
 270   void doit();
 271   bool allow_nested_vm_operations() const        { return true; }
 272 };
 273 
 274 
 275 class VM_ZombieAll: public VM_Operation {
 276  public:
 277   VM_ZombieAll() {}
 278   VMOp_Type type() const                         { return VMOp_ZombieAll; }
 279   void doit();
 280   bool allow_nested_vm_operations() const        { return true; }