< prev index next >

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

erik allocation
   if (HAS_PENDING_EXCEPTION) {
     NOT_PRODUCT(guarantee(false, "Should not allocate with exception pending"));
     return NULL;  // caller does a CHECK_0 too
   }
 
-  HeapWord* result = NULL;
-  if (UseTLAB) {
-    result = allocate_from_tlab(klass, THREAD, size);
-    if (result != NULL) {
-      assert(!HAS_PENDING_EXCEPTION,
-             "Unexpected exception, will result in uninitialized storage");
-      return result;
-    }
-  }
   bool gc_overhead_limit_was_exceeded = false;
-  result = Universe::heap()->mem_allocate(size,
-                                          &gc_overhead_limit_was_exceeded);
+  CollectedHeap* heap = Universe::heap();
+  HeapWord* result = heap->obj_allocate_raw(klass, size, &gc_overhead_limit_was_exceeded, THREAD);
+
   if (result != NULL) {
     NOT_PRODUCT(Universe::heap()->
       check_for_non_bad_heap_word_value(result, size));
     assert(!HAS_PENDING_EXCEPTION,
            "Unexpected exception, will result in uninitialized storage");

@@ -159,11 +151,10 AllocTracer::send_allocation_outside_tlab(klass, result, size * HeapWordSize, THREAD); return result; } - if (!gc_overhead_limit_was_exceeded) { // -XX:+HeapDumpOnOutOfMemoryError and -XX:OnOutOfMemoryError support report_java_out_of_memory("Java heap space"); if (JvmtiExport::should_post_resource_exhausted()) {
@@ -191,19 +182,22 HeapWord* obj = common_mem_allocate_noinit(klass, size, CHECK_NULL); init_obj(obj, size); return obj; } -HeapWord* CollectedHeap::allocate_from_tlab(Klass* klass, Thread* thread, size_t size) { +HeapWord* CollectedHeap::allocate_from_tlab(Klass* klass, size_t size, TRAPS) { assert(UseTLAB, "should use UseTLAB"); - HeapWord* obj = thread->tlab().allocate(size); + HeapWord* obj = THREAD->tlab().allocate(size); if (obj != NULL) { return obj; } // Otherwise... - return allocate_from_tlab_slow(klass, thread, size); + obj = allocate_from_tlab_slow(klass, size, THREAD); + assert(obj == NULL || !HAS_PENDING_EXCEPTION, + "Unexpected exception, will result in uninitialized storage"); + return obj; } void CollectedHeap::init_obj(HeapWord* obj, size_t size) { assert(obj != NULL, "cannot initialize NULL object"); const size_t hs = oopDesc::header_size();
< prev index next >