src/hotspot/share/code/codeBlob.hpp
changeset 49655 d6893a76c554
parent 49373 47b5652f2928
child 51333 f6641fcf7b7e
equal deleted inserted replaced
49654:16f53c9c7493 49655:d6893a76c554
    56 //                         point to is allocated in the AOTCodeHeap which is in the C-Heap as
    56 //                         point to is allocated in the AOTCodeHeap which is in the C-Heap as
    57 //                         well (i.e. it's the memory where the shared library was loaded to)
    57 //                         well (i.e. it's the memory where the shared library was loaded to)
    58 //  RuntimeBlob          : Non-compiled method code; generated glue code
    58 //  RuntimeBlob          : Non-compiled method code; generated glue code
    59 //   BufferBlob          : Used for non-relocatable code such as interpreter, stubroutines, etc.
    59 //   BufferBlob          : Used for non-relocatable code such as interpreter, stubroutines, etc.
    60 //    AdapterBlob        : Used to hold C2I/I2C adapters
    60 //    AdapterBlob        : Used to hold C2I/I2C adapters
       
    61 //    VtableBlob         : Used for holding vtable chunks
    61 //    MethodHandlesAdapterBlob : Used to hold MethodHandles adapters
    62 //    MethodHandlesAdapterBlob : Used to hold MethodHandles adapters
    62 //   RuntimeStub         : Call to VM runtime methods
    63 //   RuntimeStub         : Call to VM runtime methods
    63 //   SingletonBlob       : Super-class for all blobs that exist in only one instance
    64 //   SingletonBlob       : Super-class for all blobs that exist in only one instance
    64 //    DeoptimizationBlob : Used for deoptimization
    65 //    DeoptimizationBlob : Used for deoptimization
    65 //    ExceptionBlob      : Used for stack unrolling
    66 //    ExceptionBlob      : Used for stack unrolling
   130   virtual bool is_deoptimization_stub() const         { return false; }
   131   virtual bool is_deoptimization_stub() const         { return false; }
   131   virtual bool is_uncommon_trap_stub() const          { return false; }
   132   virtual bool is_uncommon_trap_stub() const          { return false; }
   132   virtual bool is_exception_stub() const              { return false; }
   133   virtual bool is_exception_stub() const              { return false; }
   133   virtual bool is_safepoint_stub() const              { return false; }
   134   virtual bool is_safepoint_stub() const              { return false; }
   134   virtual bool is_adapter_blob() const                { return false; }
   135   virtual bool is_adapter_blob() const                { return false; }
       
   136   virtual bool is_vtable_blob() const                 { return false; }
   135   virtual bool is_method_handles_adapter_blob() const { return false; }
   137   virtual bool is_method_handles_adapter_blob() const { return false; }
   136   virtual bool is_aot() const                         { return false; }
   138   virtual bool is_aot() const                         { return false; }
   137   virtual bool is_compiled() const                    { return false; }
   139   virtual bool is_compiled() const                    { return false; }
   138 
   140 
   139   inline bool is_compiled_by_c1() const    { return _type == compiler_c1; };
   141   inline bool is_compiled_by_c1() const    { return _type == compiler_c1; };
   378 // BufferBlob: used to hold non-relocatable machine code such as the interpreter, stubroutines, etc.
   380 // BufferBlob: used to hold non-relocatable machine code such as the interpreter, stubroutines, etc.
   379 
   381 
   380 class BufferBlob: public RuntimeBlob {
   382 class BufferBlob: public RuntimeBlob {
   381   friend class VMStructs;
   383   friend class VMStructs;
   382   friend class AdapterBlob;
   384   friend class AdapterBlob;
       
   385   friend class VtableBlob;
   383   friend class MethodHandlesAdapterBlob;
   386   friend class MethodHandlesAdapterBlob;
   384   friend class WhiteBox;
   387   friend class WhiteBox;
   385 
   388 
   386  private:
   389  private:
   387   // Creation support
   390   // Creation support
   423 
   426 
   424   // Typing
   427   // Typing
   425   virtual bool is_adapter_blob() const { return true; }
   428   virtual bool is_adapter_blob() const { return true; }
   426 };
   429 };
   427 
   430 
       
   431 //---------------------------------------------------------------------------------------------------
       
   432 class VtableBlob: public BufferBlob {
       
   433 private:
       
   434   VtableBlob(const char*, int);
       
   435 
       
   436 public:
       
   437   // Creation
       
   438   static VtableBlob* create(const char* name, int buffer_size);
       
   439 
       
   440   // Typing
       
   441   virtual bool is_vtable_blob() const { return true; }
       
   442 };
   428 
   443 
   429 //----------------------------------------------------------------------------------------------------
   444 //----------------------------------------------------------------------------------------------------
   430 // MethodHandlesAdapterBlob: used to hold MethodHandles adapters
   445 // MethodHandlesAdapterBlob: used to hold MethodHandles adapters
   431 
   446 
   432 class MethodHandlesAdapterBlob: public BufferBlob {
   447 class MethodHandlesAdapterBlob: public BufferBlob {