< prev index next >

src/share/vm/code/codeBlob.cpp

Print this page
rev 10504 : value type calling convention


 234   MemoryService::track_code_cache_memory_usage();
 235 
 236   return blob;
 237 }
 238 
 239 void* BufferBlob::operator new(size_t s, unsigned size) throw() {
 240   return CodeCache::allocate(size, CodeBlobType::NonNMethod);
 241 }
 242 
 243 void BufferBlob::free(BufferBlob *blob) {
 244   ThreadInVMfromUnknown __tiv;  // get to VM state in case we block on CodeCache_lock
 245   blob->flush();
 246   {
 247     MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
 248     CodeCache::free((CodeBlob*)blob);
 249   }
 250   // Track memory usage statistic after releasing CodeCache_lock
 251   MemoryService::track_code_cache_memory_usage();
 252 }
 253 




 254 
 255 //----------------------------------------------------------------------------------------------------
 256 // Implementation of AdapterBlob
 257 
 258 AdapterBlob::AdapterBlob(int size, CodeBuffer* cb) :
 259   BufferBlob("I2C/C2I adapters", size, cb) {
 260   CodeCache::commit(this);
 261 }
 262 
 263 AdapterBlob* AdapterBlob::create(CodeBuffer* cb) {
 264   ThreadInVMfromUnknown __tiv;  // get to VM state in case we block on CodeCache_lock
 265 
 266   AdapterBlob* blob = NULL;
 267   unsigned int size = allocation_size(cb, sizeof(AdapterBlob));
 268   {
 269     MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
 270     blob = new (size) AdapterBlob(size, cb);
 271   }
 272   // Track memory usage statistic after releasing CodeCache_lock
 273   MemoryService::track_code_cache_memory_usage();
 274 
 275   return blob;
 276 }
 277 
 278 
 279 //----------------------------------------------------------------------------------------------------
 280 // Implementation of MethodHandlesAdapterBlob
 281 
 282 MethodHandlesAdapterBlob* MethodHandlesAdapterBlob::create(int buffer_size) {
 283   ThreadInVMfromUnknown __tiv;  // get to VM state in case we block on CodeCache_lock
 284 
 285   MethodHandlesAdapterBlob* blob = NULL;
 286   unsigned int size = sizeof(MethodHandlesAdapterBlob);
 287   CodeCacheExtensions::size_blob("MethodHandles adapters", &buffer_size);
 288   // align the size to CodeEntryAlignment
 289   size = align_code_offset(size);
 290   size += round_to(buffer_size, oopSize);




 234   MemoryService::track_code_cache_memory_usage();
 235 
 236   return blob;
 237 }
 238 
 239 void* BufferBlob::operator new(size_t s, unsigned size) throw() {
 240   return CodeCache::allocate(size, CodeBlobType::NonNMethod);
 241 }
 242 
 243 void BufferBlob::free(BufferBlob *blob) {
 244   ThreadInVMfromUnknown __tiv;  // get to VM state in case we block on CodeCache_lock
 245   blob->flush();
 246   {
 247     MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
 248     CodeCache::free((CodeBlob*)blob);
 249   }
 250   // Track memory usage statistic after releasing CodeCache_lock
 251   MemoryService::track_code_cache_memory_usage();
 252 }
 253 
 254 BufferBlob::BufferBlob(const char* name, int size, CodeBuffer* cb, int frame_complete, int frame_size, OopMapSet* oop_maps)
 255   : CodeBlob(name, cb, sizeof(BufferBlob), size, frame_complete, frame_size, oop_maps)
 256 {}
 257 
 258 
 259 //----------------------------------------------------------------------------------------------------
 260 // Implementation of AdapterBlob
 261 
 262 AdapterBlob::AdapterBlob(int size, CodeBuffer* cb, int frame_complete, int frame_size, OopMapSet* oop_maps) :
 263   BufferBlob("I2C/C2I adapters", size, cb, frame_complete, frame_size, oop_maps) {
 264   CodeCache::commit(this);
 265 }
 266 
 267 AdapterBlob* AdapterBlob::create(CodeBuffer* cb, int frame_complete, int frame_size, OopMapSet* oop_maps) {
 268   ThreadInVMfromUnknown __tiv;  // get to VM state in case we block on CodeCache_lock
 269 
 270   AdapterBlob* blob = NULL;
 271   unsigned int size = allocation_size(cb, sizeof(AdapterBlob));
 272   {
 273     MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
 274     blob = new (size) AdapterBlob(size, cb, frame_complete, frame_size, oop_maps);
 275   }
 276   // Track memory usage statistic after releasing CodeCache_lock
 277   MemoryService::track_code_cache_memory_usage();
 278 
 279   return blob;
 280 }
 281 
 282 
 283 //----------------------------------------------------------------------------------------------------
 284 // Implementation of MethodHandlesAdapterBlob
 285 
 286 MethodHandlesAdapterBlob* MethodHandlesAdapterBlob::create(int buffer_size) {
 287   ThreadInVMfromUnknown __tiv;  // get to VM state in case we block on CodeCache_lock
 288 
 289   MethodHandlesAdapterBlob* blob = NULL;
 290   unsigned int size = sizeof(MethodHandlesAdapterBlob);
 291   CodeCacheExtensions::size_blob("MethodHandles adapters", &buffer_size);
 292   // align the size to CodeEntryAlignment
 293   size = align_code_offset(size);
 294   size += round_to(buffer_size, oopSize);


< prev index next >