src/hotspot/share/gc/epsilon/epsilonHeap.cpp
changeset 52091 b25bfa10f52f
parent 50523 7b7c75d87f9b
child 52150 f586d225bd0b
equal deleted inserted replaced
52090:b698138cf69b 52091:b25bfa10f52f
   116   assert(heap->kind() == CollectedHeap::Epsilon, "Not an Epsilon heap");
   116   assert(heap->kind() == CollectedHeap::Epsilon, "Not an Epsilon heap");
   117   return (EpsilonHeap*)heap;
   117   return (EpsilonHeap*)heap;
   118 }
   118 }
   119 
   119 
   120 HeapWord* EpsilonHeap::allocate_work(size_t size) {
   120 HeapWord* EpsilonHeap::allocate_work(size_t size) {
       
   121   assert(is_object_aligned(size), "Allocation size should be aligned: " SIZE_FORMAT, size);
       
   122 
   121   HeapWord* res = _space->par_allocate(size);
   123   HeapWord* res = _space->par_allocate(size);
   122 
   124 
   123   while (res == NULL) {
   125   while (res == NULL) {
   124     // Allocation failed, attempt expansion, and retry:
   126     // Allocation failed, attempt expansion, and retry:
   125     MutexLockerEx ml(Heap_lock);
   127     MutexLockerEx ml(Heap_lock);
   166                    used / M,
   168                    used / M,
   167                    used * 100.0 / max_capacity());
   169                    used * 100.0 / max_capacity());
   168     }
   170     }
   169   }
   171   }
   170 
   172 
       
   173   assert(is_object_aligned(res), "Object should be aligned: " PTR_FORMAT, p2i(res));
   171   return res;
   174   return res;
   172 }
   175 }
   173 
   176 
   174 HeapWord* EpsilonHeap::allocate_new_tlab(size_t min_size,
   177 HeapWord* EpsilonHeap::allocate_new_tlab(size_t min_size,
   175                                          size_t requested_size,
   178                                          size_t requested_size,
   208     }
   211     }
   209   }
   212   }
   210 
   213 
   211   // Always honor boundaries
   214   // Always honor boundaries
   212   size = MAX2(min_size, MIN2(_max_tlab_size, size));
   215   size = MAX2(min_size, MIN2(_max_tlab_size, size));
       
   216 
       
   217   // Always honor alignment
       
   218   size = align_up(size, MinObjAlignment);
   213 
   219 
   214   if (log_is_enabled(Trace, gc)) {
   220   if (log_is_enabled(Trace, gc)) {
   215     ResourceMark rm;
   221     ResourceMark rm;
   216     log_trace(gc)("TLAB size for \"%s\" (Requested: " SIZE_FORMAT "K, Min: " SIZE_FORMAT
   222     log_trace(gc)("TLAB size for \"%s\" (Requested: " SIZE_FORMAT "K, Min: " SIZE_FORMAT
   217                           "K, Max: " SIZE_FORMAT "K, Ergo: " SIZE_FORMAT "K) -> " SIZE_FORMAT "K",
   223                           "K, Max: " SIZE_FORMAT "K, Ergo: " SIZE_FORMAT "K) -> " SIZE_FORMAT "K",