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); |