< prev index next >

src/share/vm/code/codeBlob.hpp

Print this page
rev 10504 : value type calling convention


 218 
 219   static ByteSize oop_maps_field_offset() {
 220     return byte_offset_of(CodeBlob, _oop_maps);
 221   }
 222 };
 223 
 224 class WhiteBox;
 225 //----------------------------------------------------------------------------------------------------
 226 // BufferBlob: used to hold non-relocatable machine code such as the interpreter, stubroutines, etc.
 227 
 228 class BufferBlob: public CodeBlob {
 229   friend class VMStructs;
 230   friend class AdapterBlob;
 231   friend class MethodHandlesAdapterBlob;
 232   friend class WhiteBox;
 233 
 234  private:
 235   // Creation support
 236   BufferBlob(const char* name, int size);
 237   BufferBlob(const char* name, int size, CodeBuffer* cb);

 238 
 239   void* operator new(size_t s, unsigned size) throw();
 240 
 241  public:
 242   // Creation
 243   static BufferBlob* create(const char* name, int buffer_size);
 244   static BufferBlob* create(const char* name, CodeBuffer* cb);
 245 
 246   static void free(BufferBlob* buf);
 247 
 248   // Typing
 249   virtual bool is_buffer_blob() const            { return true; }
 250 
 251   // GC/Verification support
 252   void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f)  { /* nothing to do */ }
 253   bool is_alive() const                          { return true; }
 254 
 255   void verify();
 256   void print_on(outputStream* st) const;
 257   void print_value_on(outputStream* st) const;
 258 };
 259 
 260 
 261 //----------------------------------------------------------------------------------------------------
 262 // AdapterBlob: used to hold C2I/I2C adapters
 263 
 264 class AdapterBlob: public BufferBlob {
 265 private:
 266   AdapterBlob(int size, CodeBuffer* cb);
 267 
 268 public:
 269   // Creation
 270   static AdapterBlob* create(CodeBuffer* cb);



 271 
 272   // Typing
 273   virtual bool is_adapter_blob() const { return true; }


 274 };
 275 
 276 
 277 //----------------------------------------------------------------------------------------------------
 278 // MethodHandlesAdapterBlob: used to hold MethodHandles adapters
 279 
 280 class MethodHandlesAdapterBlob: public BufferBlob {
 281 private:
 282   MethodHandlesAdapterBlob(int size)                 : BufferBlob("MethodHandles adapters", size) {}
 283 
 284 public:
 285   // Creation
 286   static MethodHandlesAdapterBlob* create(int buffer_size);
 287 
 288   // Typing
 289   virtual bool is_method_handles_adapter_blob() const { return true; }
 290 };
 291 
 292 
 293 //----------------------------------------------------------------------------------------------------




 218 
 219   static ByteSize oop_maps_field_offset() {
 220     return byte_offset_of(CodeBlob, _oop_maps);
 221   }
 222 };
 223 
 224 class WhiteBox;
 225 //----------------------------------------------------------------------------------------------------
 226 // BufferBlob: used to hold non-relocatable machine code such as the interpreter, stubroutines, etc.
 227 
 228 class BufferBlob: public CodeBlob {
 229   friend class VMStructs;
 230   friend class AdapterBlob;
 231   friend class MethodHandlesAdapterBlob;
 232   friend class WhiteBox;
 233 
 234  private:
 235   // Creation support
 236   BufferBlob(const char* name, int size);
 237   BufferBlob(const char* name, int size, CodeBuffer* cb);
 238   BufferBlob(const char* name, int size, CodeBuffer* cb, int frame_complete, int frame_size, OopMapSet* oop_maps);
 239 
 240   void* operator new(size_t s, unsigned size) throw();
 241 
 242  public:
 243   // Creation
 244   static BufferBlob* create(const char* name, int buffer_size);
 245   static BufferBlob* create(const char* name, CodeBuffer* cb);
 246 
 247   static void free(BufferBlob* buf);
 248 
 249   // Typing
 250   virtual bool is_buffer_blob() const            { return true; }
 251 
 252   // GC/Verification support
 253   void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f)  { /* nothing to do */ }
 254   bool is_alive() const                          { return true; }
 255 
 256   void verify();
 257   void print_on(outputStream* st) const;
 258   void print_value_on(outputStream* st) const;
 259 };
 260 
 261 
 262 //----------------------------------------------------------------------------------------------------
 263 // AdapterBlob: used to hold C2I/I2C adapters
 264 
 265 class AdapterBlob: public BufferBlob {
 266 private:
 267   AdapterBlob(int size, CodeBuffer* cb, int frame_complete, int frame_size, OopMapSet* oop_maps);
 268 
 269 public:
 270   // Creation
 271   static AdapterBlob* create(CodeBuffer* cb,
 272                              int frame_complete,
 273                              int frame_size,
 274                              OopMapSet* oop_maps);
 275 
 276   // Typing
 277   virtual bool is_adapter_blob() const { return true; }
 278 
 279   bool caller_must_gc_arguments(JavaThread* thread) const { return true; }
 280 };
 281 
 282 
 283 //----------------------------------------------------------------------------------------------------
 284 // MethodHandlesAdapterBlob: used to hold MethodHandles adapters
 285 
 286 class MethodHandlesAdapterBlob: public BufferBlob {
 287 private:
 288   MethodHandlesAdapterBlob(int size)                 : BufferBlob("MethodHandles adapters", size) {}
 289 
 290 public:
 291   // Creation
 292   static MethodHandlesAdapterBlob* create(int buffer_size);
 293 
 294   // Typing
 295   virtual bool is_method_handles_adapter_blob() const { return true; }
 296 };
 297 
 298 
 299 //----------------------------------------------------------------------------------------------------


< prev index next >