< prev index next >

src/share/vm/gc/shared/collectedHeap.inline.hpp

Print this page




 163 
 164     if (JvmtiExport::should_post_resource_exhausted()) {
 165       JvmtiExport::post_resource_exhausted(
 166         JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR | JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP,
 167         "GC overhead limit exceeded");
 168     }
 169 
 170     THROW_OOP_0(Universe::out_of_memory_error_gc_overhead_limit());
 171   }
 172 }
 173 
 174 HeapWord* CollectedHeap::common_mem_allocate_init(KlassHandle klass, size_t size, TRAPS) {
 175   HeapWord* obj = common_mem_allocate_noinit(klass, size, CHECK_NULL);
 176   init_obj(obj, size);
 177   return obj;
 178 }
 179 
 180 HeapWord* CollectedHeap::allocate_from_tlab(KlassHandle klass, Thread* thread, size_t size) {
 181   assert(UseTLAB, "should use UseTLAB");
 182 

 183   HeapWord* obj = thread->tlab().allocate(size);
 184   if (obj != NULL) {

 185     return obj;
 186   }
 187   // Otherwise...
 188   return allocate_from_tlab_slow(klass, thread, size);
 189 }
 190 
 191 void CollectedHeap::init_obj(HeapWord* obj, size_t size) {
 192   assert(obj != NULL, "cannot initialize NULL object");
 193   const size_t hs = oopDesc::header_size();
 194   assert(size >= hs, "unexpected object size");
 195   ((oop)obj)->set_klass_gap(0);
 196   Copy::fill_to_aligned_words(obj + hs, size - hs);
 197 }
 198 
 199 oop CollectedHeap::obj_allocate(KlassHandle klass, int size, TRAPS) {
 200   debug_only(check_for_valid_allocation_state());
 201   assert(!Universe::heap()->is_gc_active(), "Allocation during gc not allowed");
 202   assert(size >= 0, "int won't convert to size_t");
 203   HeapWord* obj = common_mem_allocate_init(klass, size, CHECK_NULL);
 204   post_allocation_setup_obj(klass, obj, size);




 163 
 164     if (JvmtiExport::should_post_resource_exhausted()) {
 165       JvmtiExport::post_resource_exhausted(
 166         JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR | JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP,
 167         "GC overhead limit exceeded");
 168     }
 169 
 170     THROW_OOP_0(Universe::out_of_memory_error_gc_overhead_limit());
 171   }
 172 }
 173 
 174 HeapWord* CollectedHeap::common_mem_allocate_init(KlassHandle klass, size_t size, TRAPS) {
 175   HeapWord* obj = common_mem_allocate_noinit(klass, size, CHECK_NULL);
 176   init_obj(obj, size);
 177   return obj;
 178 }
 179 
 180 HeapWord* CollectedHeap::allocate_from_tlab(KlassHandle klass, Thread* thread, size_t size) {
 181   assert(UseTLAB, "should use UseTLAB");
 182 
 183   size += Universe::heap()->oop_extra_words();
 184   HeapWord* obj = thread->tlab().allocate(size);
 185   if (obj != NULL) {
 186     obj = Universe::heap()->tlab_post_allocation_setup(obj);
 187     return obj;
 188   }
 189   // Otherwise...
 190   return allocate_from_tlab_slow(klass, thread, size);
 191 }
 192 
 193 void CollectedHeap::init_obj(HeapWord* obj, size_t size) {
 194   assert(obj != NULL, "cannot initialize NULL object");
 195   const size_t hs = oopDesc::header_size();
 196   assert(size >= hs, "unexpected object size");
 197   ((oop)obj)->set_klass_gap(0);
 198   Copy::fill_to_aligned_words(obj + hs, size - hs);
 199 }
 200 
 201 oop CollectedHeap::obj_allocate(KlassHandle klass, int size, TRAPS) {
 202   debug_only(check_for_valid_allocation_state());
 203   assert(!Universe::heap()->is_gc_active(), "Allocation during gc not allowed");
 204   assert(size >= 0, "int won't convert to size_t");
 205   HeapWord* obj = common_mem_allocate_init(klass, size, CHECK_NULL);
 206   post_allocation_setup_obj(klass, obj, size);


< prev index next >