src/hotspot/share/code/codeHeapState.hpp
changeset 51124 40ef1bb91ee8
parent 49825 f909f09569ca
child 51139 c95334202a14
--- a/src/hotspot/share/code/codeHeapState.hpp	Mon Jul 16 16:31:33 2018 +0200
+++ b/src/hotspot/share/code/codeHeapState.hpp	Mon Jul 16 16:57:37 2018 +0200
@@ -43,26 +43,28 @@
   };
 
   enum blobType {
-     noType = 0,         // must be! due to initialization by memset to zero
-     // The nMethod_* values correspond 1:1 to the CompiledMethod enum values.
-     nMethod_inuse,       // executable. This is the "normal" state for a nmethod.
-     nMethod_notused,     // assumed inactive, marked not entrant. Could be revived if necessary.
-     nMethod_notentrant,  // no new activations allowed, marked for deoptimization. Old activations may still exist.
-                         // Will transition to "zombie" after all activations are gone.
-     nMethod_zombie,      // No more activations exist, ready for purge (remove from code cache).
-     nMethod_unloaded,    // No activations exist, should not be called. Transient state on the way to "zombie".
-     nMethod_alive = nMethod_notentrant, // Combined state: nmethod may have activations, thus can't be purged.
-     nMethod_dead  = nMethod_zombie,     // Combined state: nmethod does not have any activations.
-     runtimeStub   = nMethod_unloaded + 1,
-     ricochetStub,
-     deoptimizationStub,
-     uncommonTrapStub,
-     exceptionStub,
-     safepointStub,
-     adapterBlob,
-     mh_adapterBlob,
-     bufferBlob,
-     lastType
+    noType = 0,             // must be! due to initialization by memset to zero
+    // The nMethod_* values correspond to the CompiledMethod enum values.
+    // We can't use the CompiledMethod values 1:1 because we depend on noType == 0.
+    nMethod_inconstruction, // under construction. Very soon, the type will transition to "in_use".
+    nMethod_inuse,          // executable. This is the "normal" state for a nmethod.
+    nMethod_notused,        // assumed inactive, marked not entrant. Could be revived if necessary.
+    nMethod_notentrant,     // no new activations allowed, marked for deoptimization. Old activations may still exist.
+                            // Will transition to "zombie" after all activations are gone.
+    nMethod_zombie,         // No more activations exist, ready for purge (remove from code cache).
+    nMethod_unloaded,       // No activations exist, should not be called. Transient state on the way to "zombie".
+    nMethod_alive = nMethod_notentrant, // Combined state: nmethod may have activations, thus can't be purged.
+    nMethod_dead  = nMethod_zombie,     // Combined state: nmethod does not have any activations.
+    runtimeStub   = nMethod_unloaded + 1,
+    ricochetStub,
+    deoptimizationStub,
+    uncommonTrapStub,
+    exceptionStub,
+    safepointStub,
+    adapterBlob,
+    mh_adapterBlob,
+    bufferBlob,
+    lastType
   };
 
  private:
@@ -214,6 +216,7 @@
     unsigned int  nBlocks_t2;
     unsigned int  nBlocks_alive;
     unsigned int  nBlocks_dead;
+    unsigned int  nBlocks_inconstr;
     unsigned int  nBlocks_unloaded;
     unsigned int  nBlocks_stub;
     // FreeBlk data