< prev index next >

src/hotspot/share/code/codeBlob.hpp

Print this page




 375   // Deal with Disassembler, VTune, Forte, JvmtiExport, MemoryService.
 376   static void trace_new_stub(RuntimeBlob* blob, const char* name1, const char* name2 = "");
 377 };
 378 
 379 class WhiteBox;
 380 //----------------------------------------------------------------------------------------------------
 381 // BufferBlob: used to hold non-relocatable machine code such as the interpreter, stubroutines, etc.
 382 
 383 class BufferBlob: public RuntimeBlob {
 384   friend class VMStructs;
 385   friend class AdapterBlob;
 386   friend class VtableBlob;
 387   friend class MethodHandlesAdapterBlob;
 388   friend class BufferedValueTypeBlob;
 389   friend class WhiteBox;
 390 
 391  private:
 392   // Creation support
 393   BufferBlob(const char* name, int size);
 394   BufferBlob(const char* name, int size, CodeBuffer* cb);
 395   BufferBlob(const char* name, int size, CodeBuffer* cb, int frame_complete, int frame_size, OopMapSet* oop_maps);
 396 
 397   void* operator new(size_t s, unsigned size) throw();
 398 
 399  public:
 400   // Creation
 401   static BufferBlob* create(const char* name, int buffer_size);
 402   static BufferBlob* create(const char* name, CodeBuffer* cb);
 403 
 404   static void free(BufferBlob* buf);
 405 
 406   // Typing
 407   virtual bool is_buffer_blob() const            { return true; }
 408 
 409   // GC/Verification support
 410   void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f)  { /* nothing to do */ }
 411   bool is_alive() const                          { return true; }
 412 
 413   void verify();
 414   void print_on(outputStream* st) const;
 415   void print_value_on(outputStream* st) const;
 416 };
 417 
 418 
 419 //----------------------------------------------------------------------------------------------------
 420 // AdapterBlob: used to hold C2I/I2C adapters
 421 
 422 class AdapterBlob: public BufferBlob {
 423 private:
 424   AdapterBlob(int size, CodeBuffer* cb, int frame_complete, int frame_size, OopMapSet* oop_maps);
 425 
 426 public:
 427   // Creation
 428   static AdapterBlob* create(CodeBuffer* cb,
 429                              int frame_complete,
 430                              int frame_size,
 431                              OopMapSet* oop_maps);

 432 
 433   // Typing
 434   virtual bool is_adapter_blob() const { return true; }
 435 
 436   bool caller_must_gc_arguments(JavaThread* thread) const { return true; }
 437 };
 438 
 439 //---------------------------------------------------------------------------------------------------
 440 class VtableBlob: public BufferBlob {
 441 private:
 442   VtableBlob(const char*, int);
 443 
 444 public:
 445   // Creation
 446   static VtableBlob* create(const char* name, int buffer_size);
 447 
 448   // Typing
 449   virtual bool is_vtable_blob() const { return true; }
 450 };
 451 




 375   // Deal with Disassembler, VTune, Forte, JvmtiExport, MemoryService.
 376   static void trace_new_stub(RuntimeBlob* blob, const char* name1, const char* name2 = "");
 377 };
 378 
 379 class WhiteBox;
 380 //----------------------------------------------------------------------------------------------------
 381 // BufferBlob: used to hold non-relocatable machine code such as the interpreter, stubroutines, etc.
 382 
 383 class BufferBlob: public RuntimeBlob {
 384   friend class VMStructs;
 385   friend class AdapterBlob;
 386   friend class VtableBlob;
 387   friend class MethodHandlesAdapterBlob;
 388   friend class BufferedValueTypeBlob;
 389   friend class WhiteBox;
 390 
 391  private:
 392   // Creation support
 393   BufferBlob(const char* name, int size);
 394   BufferBlob(const char* name, int size, CodeBuffer* cb);
 395   BufferBlob(const char* name, int size, CodeBuffer* cb, int frame_complete, int frame_size, OopMapSet* oop_maps, bool caller_must_gc_arguments = false);
 396 
 397   void* operator new(size_t s, unsigned size) throw();
 398 
 399  public:
 400   // Creation
 401   static BufferBlob* create(const char* name, int buffer_size);
 402   static BufferBlob* create(const char* name, CodeBuffer* cb);
 403 
 404   static void free(BufferBlob* buf);
 405 
 406   // Typing
 407   virtual bool is_buffer_blob() const            { return true; }
 408 
 409   // GC/Verification support
 410   void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f)  { /* nothing to do */ }
 411   bool is_alive() const                          { return true; }
 412 
 413   void verify();
 414   void print_on(outputStream* st) const;
 415   void print_value_on(outputStream* st) const;
 416 };
 417 
 418 
 419 //----------------------------------------------------------------------------------------------------
 420 // AdapterBlob: used to hold C2I/I2C adapters
 421 
 422 class AdapterBlob: public BufferBlob {
 423 private:
 424   AdapterBlob(int size, CodeBuffer* cb, int frame_complete, int frame_size, OopMapSet* oop_maps, bool caller_must_gc_arguments = false);
 425 
 426 public:
 427   // Creation
 428   static AdapterBlob* create(CodeBuffer* cb,
 429                              int frame_complete,
 430                              int frame_size,
 431                              OopMapSet* oop_maps,
 432                              bool caller_must_gc_arguments = false);
 433 
 434   // Typing
 435   virtual bool is_adapter_blob() const { return true; }
 436 
 437   bool caller_must_gc_arguments(JavaThread* thread) const { return true; }
 438 };
 439 
 440 //---------------------------------------------------------------------------------------------------
 441 class VtableBlob: public BufferBlob {
 442 private:
 443   VtableBlob(const char*, int);
 444 
 445 public:
 446   // Creation
 447   static VtableBlob* create(const char* name, int buffer_size);
 448 
 449   // Typing
 450   virtual bool is_vtable_blob() const { return true; }
 451 };
 452 


< prev index next >